2013-12-20 3 views
0

NSURLConnectionDelegateNSJsonSerialization을 사용하고 있습니다. REST 응답을 받지만 모든 값이 포함되지는 않습니다. 내가 비동기 NSURLConnection을 사용하고응답으로 모든 값을 반환하지 않는 NSJSONSerialization 구문 분석 배열/사전

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 
    [receivedData setLength:0]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [receivedData appendData:data]; 
} // receivedData is NSMutuableData initialized before 

를 구현하고 connectionDidFinishLoading에 내가하고

{ 
"error" : { 
    "err_num" : 0, 
    "err_message" : "" 
}, 
"company" : { 
    "id" : 1, 
    "name" : "company_string1" 
}, 
"company" : { 
    "id" : 7, 
    "name" : "company_string2" 
}, 
"company" : { 
    "id" : 19, 
    "name" : "company_string3" 
}, 
"company" : { 
    "id" : 13, 
    "name" : "company_string4" 
}, 
"company" : { 
    "id" : 14, 
    "name" : "company_string5" 
} 
} 

:

나는 웹 브라우저에서이 JSON 응답이

NSMutableDictionary *array = [NSJSONSerialization JSONObjectWithData:self.receivedData options:NSJSONReadingMutableContainers error:&error]; 

I을 로그, 알겠습니다.

내가 NSJSONReadingAllowFragments를 사용하는 경우
{ 
    "err_message" = ""; 
    "err_num" = 0; 
} 
{ 
    id = 14; 
    name = "company_string5"; 
} 

나는

{ 
    "err_message" = ""; 
    "err_num" = 0; 
} 
{ 
    id = 1; 
    name = company_string1; 
} 

는 또한 NSDictionary을 확인 얻을,하지만 난 같은 결과를 얻을. 중복 키로 인해 JSON과 관련된 문제가 있습니까? 마지막/첫 번째 키만 반환합니까? 또한 온라인에서 확인한 결과, 거의 모든 사람들이 유효한 JSON이라고 말합니다. 어떤 오류도주지 않습니다 !!

답변

0

음, JSON은 배열이 아닙니다 (일부 문자를 제외하지 않은 경우). 아마도 "배열"을 열거하고 따라서 키가없는 사전 값을 가져올 것입니다. NSLog는 "array"의 값 자체와 모든 키를 보게 될 것입니다 (실제로는 NSDictionary입니다).

(그리고 키가 정말로 "회사"인 경우에, 당신은 하나의 "회사"요소를 받게됩니다. 여러 개의 동일한 키가 다른 쪽 끝에서 전송 무효 JSON 될 것입니다.)

+0

이 정확히 같은 JSON 응답 즉 브라우저에 들어가서 처음에는 잘못된 JSON이라고 생각했지만 지금은 정확하다고 생각합니다. "회사"에 대해 하나의 키만있는 중첩 JSON이어야합니다. – Vacca

+0

@Vacca 중첩 JSON은 무엇입니까? 사전 (JSON "객체") 내에 여러 개의 동일한 키가있는 경우 잘못된 JSON입니다. –