2012-08-07 60 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解決了該問題。