如何解析比 NSString 更长的 JSON 文件?
Posted
技术标签:
【中文标题】如何解析比 NSString 更长的 JSON 文件?【英文标题】:How can I parse a longer JSON file than a NSString? 【发布时间】:2010-10-27 19:07:24 【问题描述】:我有点卡在一个项目中。 我正在编写一些代码来获取 JSON 文件并将其存储在 NSString 中,然后再将其解析为 NSArray。
但我得到一个错误:
2010-10-27 20:59:44.813 GeraldKervyn[21752:207] -JSONValue 失败。错误跟踪是:( "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"无法识别的前导字符\" UserInfo=0x7637890 NSLocalizedDescription=无法识别的前导字符"
我认为问题与 NSString 可以取的有限值有关。
顺便说一句,这是我正在使用的提要:http://www.geraldkervyn.com/api/get_recent_posts/
将其解析为 NSArray 最方便的方法是什么?
谢谢!
【问题讨论】:
我在调用那个 Url 时得到了这个:ERROR: json is not a valid feed template.
这不是有效的 Json,你还有别的吗?
我相信该错误意味着您遇到了无效或未转义的字符。我过去曾在更大的 JSON 字符串上使用过 SBJSON
。
但是jsonlint.com已经验证了JSON!
可能是字符集问题,我看到很多 \u2013 喜欢字符。也许其中一个是罪魁祸首。
可能是。但我无法修复它。我也在使用 SBJSON,不知道发生了什么
【参考方案1】:
首先,将 SBJson 代码添加到您的项目中,由 Stig Brautaset 提供。然后这样做...
NSString *subject = @"http://www.geraldkervyn.com/api/get_recent_posts/";
NSString *encodedSubject =
[subject stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *test = [NSString stringWithContentsOfURL:[NSURL URLWithString:encodedSubject]];
SBJsonParser *parser = [[SBJsonParser new] autorelease];
NSDictionary *json = [parser objectWithString:test];
NSArray *values = [json objectForKey:@"posts"];
【讨论】:
以上是关于如何解析比 NSString 更长的 JSON 文件?的主要内容,如果未能解决你的问题,请参考以下文章