2013-08-21 60 views
0

如果我有一個如下所示的json字符串,在objective-c中獲得名稱(bob)的第一次迭代的最佳方式是什麼?從JSON中獲取特定的嵌套項目(objective-c)

{ 
    "users": [ 
     {"id": "1", "name": "bob"}, 
     {"id": "2", "name": "john"}, 
     {"id": "3", "name": "joe"} 
    ] 
} 

順便說一句,我目前使用JSONKit解析JSON字符串。例如, NSDictionary * users = [jsonString objectFromJSONString];

+1

JSON無效。 JSON只能有一個外部對象。是否應該用'[]'包裝? – Fogmeister

+1

抱歉是編輯 – Allen

+2

我建議你考慮蘋果公司自從iOS 5以來已經存在的'NSJSONSerialization'。少一點依賴。 –

回答

0

好的,首先要做的是放棄任何第三方JSON的框架。現在有一個本地JSON類...

NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding: NSUTF8StringEncoding] options:0 error:nil]; 

NSArray *users = dictionary[@"users"]; 

一旦你做到了這一點,你可以遍歷數組users就像您的任何其它陣列。

users所述陣列中的每個對象是一個NSDictionary連鍵@[@"id", @"name"]

例如

for (NSDictionary *userDict in users) { 
    NSLog(@"User name = %@", userDict[@"name"]); 
} 
+0

爲什麼選擇投票? – Fogmeister

1

你的「用戶」容器是NSDictionary,這是一個無序關聯容器。

也就是說,嚴格來說,沒有「第一個」元素(用戶)。當然,你可以迭代快速枚舉並獲得第一個用戶,但是哪一個是「實現定義的」(因爲實現不公開,我們不知道哪一個)。

編輯:

因爲現在,你的編輯後,你的「用戶」容器是一個數組,這個事情發生顯着變化;)別人給出答案。