1

我想解析超过 500 条评论的 reddit 帖子的评论。比如这个:http ://www.reddit.com/comments/xu11o json url是: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?

4

4 回答 4

2

你试过苹果的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.
  

只需确保在发货前将下载代码切换为异步即可。

最好的祝福。

于 2012-08-08T00:03:08.953 回答
0

试试我的 JSON 解析器库,它没有这样的限制:

http://github.com/H2CO3/CarbonateJSON

于 2012-08-07T21:53:28.390 回答
0

SBJsonParser 的这种“限制”是一项安全功能,可以保护您免受假定的恶意 JSON 的侵害。该限制可通过maxDepth属性进行配置。如您所见,默认值为 32。您可以将其更改为您想要的任何整数值,或者通过将其设置为 0 来关闭最大深度检查。

于 2012-09-04T00:29:09.173 回答
0

我对 sbjson 有同样的问题。将 maxDepth (SBJsonParser.m) 更改为 128 解决了这个问题。

于 2013-11-11T22:22:05.617 回答