如何解析比 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Powershell 中开始一个比它的父级寿命更长的后台作业?

java - 多线程中的简单计算比单线程中需要更长的时间

为啥检查错误的密码比检查正确的密码要花更长的时间?

为啥偶数 N 比奇数 N 花费更长的时间?

为啥 c 中的幂函数需要比预期更长的时间

异步比顺序执行花费更长的时间