2012-08-07 57 views
1

我想分析超过500条评论的reddit文章的评论。 比如这一个:http://www.reddit.com/comments/xu11o JSON的网址是:http://www.reddit.com/comments/xu11o.json解析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?

回答

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. 

只要确保在发货之前将下载代码切换为异步。

此致敬礼。

0

SBJsonParser的这种“限制”是一项安全功能,可以保护您免受推测的恶意JSON攻击。该限制可通过maxDepth属性进行配置。正如你发现的那样,默认值是32。您可以将其更改为任何您想要的整数值,或者将最大深度检查设置为0来关闭它。

0

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