2014-02-26 3 views
0

내가 JSON 형식과 같이 얻을 :중첩 된 JSON 객체를 구문 분석하는 방법은 무엇입니까?

stream({ posts: [{CHANNEL: {ios: "(format=m3u8-aapl).m3u8"} }]})

것은 내가 얻고 싶은 것은 "IOS"에 대한 배열입니다. 이 내 코드입니다 :

id jsonObjects = [NSJSONSerialization JSONObjectWithData: 
        jsonSource options:NSJSONReadingMutableContainers error:nil]; 
for (NSDictionary *dataDict in jsonObjects) { 
    NSArray *ios_data = [[[dataDict objectForKey:@"posts"] objectForKey:@"CHANNEL"] objectForKey:@"ios"]; 
    NSLog(@"%@",ios_data); 
    dict = [NSDictionary dictionaryWithObjectsAndKeys:ios_data, ios,nil]; 

} 

하지만 그것이 어떤 문제, NULL에 반환?

+0

위의 내용은 합법적 인 JSON이 아니며, iOS에서 파싱 된 JSON의 표현도 아닙니다. –

+0

그리고 JSONObjectWithData는'error :'매개 변수를 가지고 있습니다. 그것을 사용하십시오 !!! –

+0

JSON 구문에 대한 설명은 json.org를 참조하십시오. 주로 위의 키 이름에 따옴표가 없습니다. –

답변

3

귀하의 "JSON"

stream({ posts: [{CHANNEL: {ios: "(format=m3u8-aapl).m3u8"} }]}) 

는 JSON되지 않습니다. http://jsonlint.com/과 같은 유효성 검사기를 실행하여 테스트 해 볼 수 있습니다.

nil 대신 전달할 NSError 참조를 만들어 NSJSONSerialization에서 오류 개체를 제공 할 수 있도록해야합니다. 이렇게하면 디버깅에 도움이됩니다. 여기


은 당신의 데이터가 유효한 JSON한다면 어떻게 보이는지의 예입니다
{ 
    "stream": [ 
     { 
      "posts": [ 
       { 
        "CHANNEL": { 
         "ios": "(format=m3u8-aapl).m3u8" 
        } 
       } 
      ] 
     } 
    ] 
} 

(나는 더 읽을 수 그것을 밖으로 간격하지만 간격은 구문 분석 불필요 .)

+0

대단히 감사합니다. – Daydev

0

당신이 당신의 배열 '게시물'을 들고 일단이 같은 드릴 다운 할 수 있습니다 :

NSArray *fileData = [myDic1 valueForKeyPath:@"posts.CHANNEL"]; 

다음은 다음과 같이 액세스 : 내가 잘못하지 않는 한

for (int i=0; i < [clientFileData count]; i++) { 
NSDictionary *myDictionary = [fileData objectAtIndex:i]; 
] 

또한, 귀하의 JSON 파일 형식이 잘못 보인다.

+0

고맙습니다, 내 콜백 json에 관한 것입니다. – Daydev

0

같은 응답이 오기 :

NSDictionary *dictionaryData = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; 

올바른 JSON은 JSON의 올바른 형식을 얻으이

{ 
    "posts":[ 
     { 
     "CHANNEL":{ 
      "ios":"(format=m3u8-aapl).m3u8" 
     } 
     } 
    ] 
} 

처럼 한 후 구문 분석을 시도해야합니다. 그리고 한 가지 잘못된 것은 POST입니다.

+0

마다마다 라샤드에게 감사드립니다. 제 3 자에게 형식을 수정하도록 요청하거나 다른 형식으로 데이터를 구문 분석하도록 요청할 것 같습니다. – Daydev

관련 문제