2012-10-03 2 views
1

웹에 대한 예제가 가득하다는 것을 알고 있지만 모든 것을 시도했지만 뭔가가 빠졌습니다. JSON 문자열을 사전으로 구문 분석하고 싶습니다.코코아 - JSON 문자열 파싱

E는 서버의 응답이 :

{"type":"response", "action":"mkac", "result":"[{"Band":"Adele","Hits":422},{"Band":"Bryan Adams","Hits":93},{"Band":"Adai","Hits":30},{"Band":"Adamo","Hits":18},{"Band":"Adelle","Hits":15}]"} 

을 그리고합니다

NSError *parseError = nil; 
         NSDictionary *outputDictionary = 
         [NSJSONSerialization JSONObjectWithData: [output dataUsingEncoding:NSUTF8StringEncoding] 
                 options: NSJSONReadingMutableContainers 
                  error: &parseError]; 
         NSLog(@"server said: %@", [outputDictionary objectForKey:@"result"]); 

을하지만 outputDictionary가에 allways 내가 널 수 있습니다.

아무도 도와 줄 수 있습니까?

고마워요.

+0

hmmm ..."JSONObjectWithData "에 의해 반환 된 오류가 있으면 확인할 수있는 것이 좋지 않습니까? 무엇이 잘못되었을 수 있습니까? –

+0

합법적 인 오류입니다 : "2012-10-03 15 : 05 : 35.207 IOSapp Lite [43330 : f803] sparseError : 오류 도메인 = NSCocoaErrorDomain 코드 = 3840"작업을 완료 할 수 없습니다. (코코아 오류 3840). "(문자 50 주변에 개체가 잘못 형성되었습니다.) UserInfo = 0xb53e4d0 {NSDebugDescription = 문자 50 주위에 개체가 잘못 형성되었습니다.}" –

답변

2

예, 귀하의 json이 형식이 잘못되었습니다. 제대로 포맷하는 경우, 당신은 왜 볼 수 있습니다 :

{ 
    "type":"response", 
    "action":"mkac", 
    "result":"[{"Band":"Adele","Hits":422},{"Band":"Bryan Adams","Hits":93},{"Band":"Adai","Hits":30},{"Band":"Adamo","Hits":18},{"Band":"Adelle","Hits":15}]" 
} 

당신은 알 수 있습니다 그 값이 기술적으로 "[{" 것을 의미 " 문자와 "result" 시작에 대한 값. 그러나 그 이후로는 Band이됩니다. Band은 큰 따옴표로 묶지 않고 (또는 , 또는 } 등으로 시작 함) 구문 분석 오류가 발생합니다. 즉시 [{ 전에 따옴표를 제거하고 즉시 }] 후, 다음 올바르게 구문 분석하는 경우 : 무슨 일이 있었는지 알아 냈

{ 
    "type":"response", 
    "action":"mkac", 
    "result":[ 
    { 
     "Band":"Adele", 
     "Hits":422 
    }, 
    { 
     "Band":"Bryan Adams", 
     "Hits":93 
    }, 
    { 
     "Band":"Adai", 
     "Hits":30 
    }, 
    { 
     "Band":"Adamo", 
     "Hits":18 
    }, 
    { 
     "Band":"Adelle", 
     "Hits":15 
    } 
    ] 
} 
+0

예, 지금 알아 냈습니다. 우리에게 큰 문제 :) 아. –

0

. json 문자열은 유효하지 않았습니다. "[[