2012-06-05 2 views
1

외부 API로 요청을 보내고 SBJson parser으로 응답을 구문 분석합니다. 그러나, 나는 응답이 너무 길다는 것을 의심한다, 그것은 어떻게 든 뒤죽박죽이되고있다.connectionDidFinishLoading의 데이터에서 JSON을 구문 분석 할 수 없습니다. 데이터가 너무 많습니까?

내 mainviewcontroller.h 파일에 mainviewcontroller.m 파일의 연결 방법으로 사용할 수 있도록 NSMutableData *receivedData;을 설정했습니다.

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    NSString *dataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding]; 
    NSArray *allData = [dataString JSONValue]; 
} 

그러나, 나는 JSON가 제대로 포맷되지 않은 말하는 오류의 무리를 얻을 :

그러나, 연결로드가 완료 후, 나는 다음 실행합니다. JSON을 아주 오래 -하지만 여기저기서 보면, 예를 들어 아래의 "updated_at"와 같은 문제가 있습니다.

{ 
      "id": 7844333, 
      "position": 3, 
      "content": "Cell height is off by 5 pixels", 
      "created_at": "2012-06-04T20:31:30-05:00", 
      "updated_at": "2ator": { 
       "id": 98258, 
       "name": "Brian" 
      } 

는 내가 있음에 업데이트됩니다 위 일어날 것이라고 생각한 것은 "2012-06 ... 등"과 다음 키 - 값 항목을 만든 것의 값이 {ID, 이름을}하지만 어떻게 든 뒤죽박죽 있어요 에 업데이트 됨

누구나 비슷한 문제가 있습니까? 문제가 JSONValue와 관련이 있다고 생각하지 않습니다. 구문 분석되기 전에 dataString을 nslog 아웃해야하고 JSON 오류를 찾을 수있는 곳이 있기 때문입니다.

내가 말하고자하는 것은 NSString *dataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];은 단지 긴 문자열이지만 뒤죽박죽이기 때문에 나쁜 JSON이 포함되어 있다는 것입니다.

+0

브라우저의 URL로 이동하면 어떻게됩니까? (단지 서버에 문제가 없다는 것을 100 % 확실하게 확인하십시오.) – deanWombourne

+0

그렇지 않으면 NSURLConnection 델리게이트에서받은 데이터를 처리하는 코드를 추가 할 수 있습니까? 도착한 데이터를 확인하기 위해받은 각 데이터를 NSLog로 확인할 수 있습니까? – deanWombourne

+0

브라우저에 올바른 JSON 데이터가 표시됩니다. 하나 하나를 추가하여 receiveData를 작성하려고하면 혼란 스럽습니다. 위의 코드를 추가하십시오. –

답변

2

한 번에 둘 이상의 연결에서 receivedData를 사용하고 있습니까?

:)

-1

귀하의 json이 잘못되었다고 생각합니다. 그 다음 유효한 경우 http://jsonlint.com/

:

SBJSON *parser=[[SBJSON alloc]init]; 

NSDictionary * dictionary = [parser objectWithString:responseString]; 

이 뜻 : 당신의 project.And에

가져 SBJSON 프레임 워크 클래스는 다음 코드를 시도 단지로 JSON 파일을 넣어 확인을 위해 다음을 사용하여 사전에 데이터를 입력하십시오 :

NSString *firstParseData=[dictionary objectForKey:@"your key"]; 

데이터를 검색 할 수 있습니다. 희망이 귀하의 경우에 작동합니다.

+0

그래, 내가 잘못 알고있어. JSONLint를 통해 실행했고 키/값 "updated_at"에 오류가 있음을 나타 냈습니다.하지만 파서에 지정된 데이터가 잘못되었음을 말합니다. receivedData가 잘못된 JSON 문자열을 작성하는 이유를 모르겠습니다. 그것은 손상된다. –