2013-01-25 2 views
-2
나는 복잡한 JSON 데이터는 다음과 같은 형식으로 서버에서 오는 구문 분석 할

:구문 분석 복잡한 JSON 데이터

{ 

    "Data 1":{ 
     "2012-12-01":[ 
      { 
       "field 1":"field 2", 
       "summary":"summary 1" 
      }, 
      { 
       "field":"field 2", 
       "summary":"summary 2" 
      }, 
      { 
       "service":"service 3", 
       "summary":"summary 3" 
      } 
     ], 
     "2012-12-10":[ 
      { 
       "field":"field 1", 
       "summary":"summary 1" 
      }, 
      { 
       "field":"field 2", 
       "summary":"summary 2" 
      } 
     ], 
     "2012-12-31":[ 
      { 
       "field":"field 1", 
       "summary":"summary 1" 
      } 
     ] 
    }, 
    "Data 2":{ 
     "2013-01-4":[ 
      { 
       "field":"field 1", 
       "summary":"summary 1" 
      }, 
      { 
       "field":"field 2", 
       "summary":"summary 2" 
      }, 
      { 
       "field":"field 3", 
       "summary":"summary 3" 
      } 
     ], 
     "2013-01-8":[ 
      { 
       "field":"field 1", 
       "summary":"summary 1" 
      }, 
      { 
       "field":"field 2", 
       "summary":"summary 2" 
      } 
     ], 
     "2013-01-25":[ 
      { 
       "field":"field 1", 
       "summary":"summary 1" 
      } 
     ] 
    }, 
    "Data 3":{ 
     "2013-02-09":[ 
      { 
       "field":"field 1", 
       "summary":"summary 1" 
      }, 
      { 
       "field":"field 2", 
       "summary":"summary 2" 
      }, 
      { 
       "field":"field 3", 
       "summary":"summary 3" 
      } 
     ] 
    } 

} 

가 어떻게 그것을 SBJSON를 사용하여 분석 할 수 있습니까? "꽤 인쇄"때

당신의 JSON의 첫 번째 부분은 다음과 같이 보입니다

+0

을받을 날은 아직 알려주세요 "둥지".Objective-C에는 파서의 6 가지 "브랜드"가 있으며 대부분 무료입니다. JSON 문자열을 피드하면 "둥지"가 반환됩니다. –

+0

http://json.parser.online.fr/과 같은 온라인 JSON 파서를 사용하여 JSON을 "시각화"하십시오. –

+0

SBJSon 파서로 구문 분석에 도움이 필요합니다. pls help – iOSDev

답변

1

사전에

감사 도와주세요 -

{ 
    "Data 1":{ 
     "2012-12-01":[ 
      { 
       "field 1":"field 2", 
       "summary":"summary 1" 
      }, 
      { 
       "field":"field 2", 
       "summary":"summary 2" 
      }, 
      { 
       "service":"service 3", 
       "summary":"summary 3" 
      } 
     ], 
     "2012-12-10":[ 
      { 
       "field":"field 1", 
       "summary":"summary 1" 
      }, 
      { 
       "field":"field 2", 
       "summary":"summary 2" 
      } 
     ], 
     "2012-12-31":[ 
      { 
       "field":"field 1", 
       "summary":"summary 1" 
      } 
     ] 
    }, 
    "Data 2":{ 
     "2013-01-4":[ 

json으로의 바깥 쪽 부분은 사전입니다 (JSON은이 객체를 "객체"라고 부름) - 개구부가 {이므로이를 알 수 있습니다. 이 사전에는 "데이터 1"이라는 키/개체 쌍이 있습니다. 객체는 사전 (다른 {)이며 첫 번째 키/객체 쌍을 "2012-12-01"이라고합니다. 이 두 번째 쌍의 개체는 세 개의 사전이 포함 된 배열()입니다. 등

1

내가 특별히 SBJSON을 사용한 적이 있지만, 그것의 모양에 의해 당신은 할 수 있어야한다 그냥 수행

(이 가정 당신의 JSON은 현재있는 NSString입니다)

NSDictionary *arrayOfJSONString = [SBJsonObject objectWithString:jsonString]; 

또는 뭔가 그것과 비슷합니다.

개인적으로는 가끔 JSONKit을 사용합니다. 프로젝트에 포함 할 작은 .h/.m입니다. (RestKit에도 포함되어 있습니다). 이 경우 다만 것 : 당신이 원하는 경우 대신 내가 RestKit

2
을 살펴 것 Objc-C 클래스를 만들

NSDictionary *dataOne = [jsonDict objectForKey:@"Data 1"]; 

:

NSDictionary *jsonDict = [jsonString objectFromJSONString]; 

그런 다음 당신은 그것을 좋아 사용할 수 있습니다

JSON 구문 분석은 한 줄 명령입니다. 당신이에서 iOS 5에 내장 된 JSON 파서를 사용하려는 이상 NSJSONSerialization이 단지의 경우

NSError *error; 
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data 
                  options:0 
                  error:&error]; 

당신이 SBJSON을 사용하고자하는 경우는 다음과 같습니다

SBJsonParser *parser = [[SBJsonParser alloc] init]; 
NSDictionary *dictionary = [parser objectWithData:data]; 

어쨌든, 지금 당신이 가지고 있음 NSDictionary에 JSON, 당신은 가서 수 있으며, 적절한 예를 탐색 : 새 첨자 표기법을 사용하려는 경우,

NSDictionary *data1 = [dictionary objectForKey:@"Data 1"]; 
NSArray *arrayDecFirst2012 = [data1 objectForKey:@"2012-12-01"]; 
NSDictionary *firstDictionaryInDecFirst2012 = [arrayDecFirst2012 objectAtIndex:0]; 
NSString *fieldOne = [firstDictionaryInDecFirst2012 objectForKey:@"field 1"]; 

을 또는 그 것 :

NSDictionary *data1 = dictionary[@"Data 1"]; 
NSArray *arrayDecFirst2012 = data1[@"2012-12-01"]; 
NSDictionary *firstDictionaryInDecFirst2012 = arrayDecFirst2012[0]; 
NSString *fieldOne = firstDictionaryInDecFirst2012[@"field 1"]; 
1

단계로이 튜토리얼 단계를 읽어 보시기 바랍니다

Working with JSON in iOS

당신이 JSON을 반환합니다 당신의 주식 파서의 상관 배열/사전에 해석 어떤 문제