我想用500多条评论来解析reddit帖子的评论。 例如这一个:http://www.reddit.com/comments/xu11o json网址为:http://www.reddit.com/comments/xu11o.json
我在使用SBJson实现这一目标。
当我尝试使用此代码获取NSArray时:
NSString* response = [request responseString];
NSArray* responseArray = [response JSONValue];
我收到以下错误消息:-JSONValue failed. Error is: Input depth exceeds max depth of 32
将深度更改为更高的数量(例如100)会使我的应用程序崩溃。
如果reddit帖子只有20条评论,我会获得NSArray并且可以成功显示它们。
我需要更改什么才能获得NSArray?
答案 0 :(得分:2)
您是否尝试过Apple的NSJSONSerialization JSON解析库?它有效。
NSString *urlString = @"http://www.reddit.com/comments/xu11o.json";
NSURL *url = [NSURL URLWithString:urlString];
NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:
[NSURLRequest requestWithURL:url]
returningResponse:&response
error:&error];
id jsonObj = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
// Do something with jsonObj which is an array.
请确保在发货前将下载代码切换为异步。
最好的问候。
答案 1 :(得分:0)
试试我的JSON解析器库,没有这样的限制:
答案 2 :(得分:0)
SBJsonParser的这种“限制”是一种安全功能,可以保护您免受假定的恶意JSON攻击。该限制可通过maxDepth属性进行配置。正如您所发现的,默认值为32。您可以将其更改为所需的任何整数值,或通过将其设置为0来关闭最大深度检查。
答案 3 :(得分:0)
我和sbjson有同样的问题。将maxDepth(SBJsonParser.m)更改为128解决了问题。