안녕하세요, IOS에 json을 구문 분석하는 데 문제가 있습니다. 이것이 json 데이터입니다.Json 파싱이 IOS에서 잘못되었습니다.
{
"app_info": [
{
"app_name": "haka",
"sync_protocol_version": "1"
}
],
"updates": [
{
"timestamp": "Sat Apr 21 13:04:08 IST 2012",
"people": [
{
"personal_info": [
{
"first_name": "phlox",
"last_name": "",
"employee_id": "010",
"gender": "-",
"marital_status": "-",
"nationality": "Denobulan",
"dob": "re-23",
"photo": "http://c.cc/users/010/profile/image"
}
],
"contact_details": [
{
"address": [
{
"street": "#1, this way",
"city": "tank",
"state": "sick bay",
"zip": "0978",
"country": "Enterprise"
}
],
"telephone": [
{
"work": "010",
"mobile": "010",
"home": "010"
}
],
"email": [
{
"work": "[email protected]",
"personal": ""
}
]
}
],
"emergency": [
{
"contact": [
{
"name": "-",
"relationship": "",
"telephone": [
{
"work": "",
"home": "",
"mobile": ""
}
]
}
],
"blood_group": ""
}
],
"categorization": [
{
"designation": "",
"department": "",
"location": "",
"joining_date": ""
}
]
},
{
"personal_info": [
{
"first_name": "",
"last_name": "",
"employee_id": "",
"gender": "",
"marital_status": "",
"nationality": "",
"dob": "",
"photo": ""
}
],
"contact_details": [
{
"address": [
{
"street": "",
"city": "",
"state": "",
"zip": "",
"country": ""
}
],
"telephone": [
{
"work": "",
"mobile": "",
"home": ""
}
],
"email": [
{
"work": "",
"personal": ""
}
]
}
],
"emergency": [
{
"contact": [
{
"name": "",
"relationship": "",
"telephone": [
{
"work": "",
"home": "",
"mobile": ""
}
]
}
],
"blood_group": ""
}
],
"categorization": [
{
"designation": "",
"department": "",
"location": "",
"joining_date": ""
}
]
}
],
"messages": [
{
"sender": "Archer<[email protected]>",
"sender_role": "admin",
"message_type": "broadcast",
"message": "parking space up for grabs",
"message_recipients": "all",
"reply_permitted": "0"
}
],
"events": [
{
"creator": "Travis<[email protected]>",
"event_title": "",
"event_description": "",
"event_time_start": "",
"event_time_end": "",
"location": "",
"invitees": [
{
"id": "020",
"acceptance": "1"
}
]
}
],
"settings": [
{
"sync_frequency": "0"
}
]
}
]}
이것은 유효한 json 형식입니다. http://jsonlint.com/으로 확인한 후 http://braincast.nl/samples/jsoneditor/
구조체를 참조하십시오. 구조체에 따르면 people 태그는 2 개의 객체를 가지므로 2의 개수를 반환해야하지만 구문 분석 중에는 1 개만 반환됩니다. 나는 옵션을 완전히 벗어났다. 제발 도와주세요.
이것은 당신의 객체 모두가 배열에 싸여 있다고는 할 수
NSString *textPAth = [[NSBundle mainBundle] pathForResource:@"sync" ofType:@"json"];
NSError *error;
NSString *content = [NSString stringWithContentsOfFile:textPAth encoding:NSUTF8StringEncoding error:&error];
NSArray *jsonArray = [[content JSONValue] retain];
NSLog(@"JSON ARRAY %@ AND COUNT %d",[[jsonArray valueForKey:@"updates"] valueForKey:@"people"],[[[jsonArray valueForKey:@"updates"] valueForKey:@"people"] count]);
+1 정답이어야합니다. 한 쪽 메모. JSON 데이터를 파싱하고 배열을 예상 할 때 JSON 렌더링 (일반적으로 서버 측)에 따라 불쾌한 결과를 얻을 수 있습니다. 실제로 JSON 렌더러가 하나의 객체를 객체로 포함하고 배열로 전달하지 않는 것은 사실입니다. 예를 들어 [PHP의 json_encode] (http://www.php.net/manual/en/function.json-encode.php)를 참조하십시오. – Till
좋은 지적. 나는 단지 특정 예제 (오류 검사/방어 코드 없음)에 대한 빠르고 간단한 파싱을 제공했습니다. – Joel
감사합니다. Joel. 완벽하게 작동합니다. 나는 Till과 완전히 동의한다. – arindam