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

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.
  

出荷する前に、ダウンロード コードを非同期に切り替えてください。

よろしくお願いします。

于 2012-08-08T00:03:08.953 に答える
0

sbjson でも同じ問題がありました。maxDepth (SBJsonParser.m) を 128 に変更すると、問題が解決しました。

于 2013-11-11T22:22:05.617 に答える
0

SBJsonParser のこの「制限」はセキュリティ機能であり、推定される悪意のある JSON からユーザーを保護します。制限は、maxDepthプロパティを使用して構成できます。あなたが見つけたように、デフォルトは32です。任意の整数値に変更するか、0 に設定して最大深度チェックをオフにすることができます。

于 2012-09-04T00:29:09.173 に答える