2012-08-07 6 views
1

500 개가 넘는 코멘트가있는 reddit 게시물의 주석을 분석하고 싶습니다. 예를 들어이 하나 http://www.reddit.com/comments/xu11o json으로 URL은 다음과 같습니다 오전에 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를 가져 오려면 무엇을 변경해야합니까?

http://github.com/H2CO3/CarbonateJSON

답변

0

내 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로 변경하면 문제가 해결됩니다.