こんにちは、私は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/
の構造を参照してください。構造によると、2つのオブジェクトを持っているので、peopleタグは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
ありがとうジョエル。それは完璧に働いています。私はTillと完全に同意しています。 – arindam