2015-01-05 3 views
-1

이 JSON이 있습니다.JSON 객체 구문 분석 오류

{ 
"cnt": 1, 
"list": [ 
    { 
     "object1": [ 
      { 
       "subobject1": "value1", 
       "subobject2": "value2", 
       "subobject3": "value3" 
      } 
     ], 
     "object2": { 
      "subobject1": value1, 
      "subobject1": value2, 
      "subobject1": value3 
     } 
    } 
] 

}

나는 첫 번째 개체에서 데이터를 얻을 수 없습니다. 나는 데이터를 얻을 나는 NSLOG에서 볼 수있는 다른 개체의 오류

-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fa281f82520 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fa281f82520' 

을받을 수 있지만 첫 번째 이유는 응용 프로그램이 충돌한다의 문제 무엇을 이해할 수 없습니다.

이 내가 개체하는 .m 파일

DAServiceObject *object1 = [[DAServiceObject alloc] initWithDictionary:dictionary[@"object1"]]; 
self.value1 = object1.value1; 
self.value2 = object1.value2; 

앱 충돌에서 다음 DataModel이

NSError *deserializationError; 
     NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &deserializationError]; 

     NSArray * responseArr = json[@"list"]; 

     NSMutableArray *result = [[NSMutableArray alloc] init]; 

     if(responseArr && [responseArr isKindOfClass:[NSArray class]]) { 

      for(NSDictionary *cDictionary in responseArr) { 
       DAObject *cty = [[DAObject alloc] initWithDictionary:ctyDictionary]; 

       if(cty) { 
        [result addObject:cty]; 
       } 

      } 

     } 

에서 JSON을 구문 분석하는 방법이다.

+0

입니까? 첫 번째는 배열이고 두 번째는 객체입니다. (둘 다 기술적으로 객체 임에도 불구하고 이것은 꽤 다른 차이입니다) –

답변

0

데이터 구조를 잘못 해석했습니다. "목록"에는 하나의 항목 즉 사전이 포함 된 배열이 포함되어 있습니다. 이 사전은 각 키 (예 : 'item1')에 대한 배열을 포함하며 다시 한 항목 (다시 사전) 만 포함합니다. 그것은 당신의 객체가 유사하지 않은 것을 목적에

편집

// ... 
if(responseArr && [responseArr isKindOfClass:[NSArray class]]) { 
    NSDictionary *content = responseArr[0]; 
    for (NSSString *key in [content allKeys]) { 
     NSDictionary *a = content[key][0]; 
     // ... 
    } 
} 
+0

OK, 이해했습니다. 그러면 어떻게 해석 할 수 있을까요? 어떤 방법이 있습니까? – Newbie

+0

업데이트 된 답변보기 – tilo

0

JSON 데이터가 배열이 아닙니다. 그것은 사전입니다. 하나의 키 "cnt"와 하나의 키 "list"가있는 사전입니다. 키 "list"아래의 객체는 배열입니다.