2011-12-29 177 views
3

我有一個json集合我能夠完全精細地解析1級深度,但主集合中的每個項目都有一個集合。我不太知道如何訪問「項」,讓子集就像我與主要收集沒有...ios json解析子集合

NSString *response = [request responseString]; 
NSDictionary *json = [response JSONValue]; 

NSArray *items = [json valueForKeyPath:@"item"]; 

for (id item in items) 
{ 
    mainObject.name = [item objectForKey:@"name"]; //this works fine 
    // How do I get sub collection from item? 
} 

一些JSON的:

{"item": 
    { 
     "available_at"  : null, 
     "created_at"  : "2011-12-09T19:52:23Z", 
     "lo_id"   : 30, 
     "id"    : 24, 
     "merchant_id"  : 1, 
     "order_id"   : 25, 
     "reach_local_link" : null, 
     "status"   : null, 
     "token"   : "12-258847891-1", 
     "updated_at"  : "2011-12-09T19:52:23Z", 
     "url"    : "api/dir/v1/item/12-258847891-1/print", 
     "subitem1"   : 
      { 
      "area"  : "local", 
      "broker_id" : "", 
      "broker_id" : null, 
      "category" : 
       { 
        "category":.... 

在本例中,有可以是多個子項目,如subitem1。我需要獲取這些集合,並在當前的環境中有另一個for循環。

+0

包含一點你的JSON看起來像 – Sam 2011-12-29 15:54:44

+0

包括一些json – Jesse 2011-12-29 16:14:49

回答

0

item只是一個字典或數組,如果它是JSON對象中的一個。例如,你應該能夠做到這一點:

NSDictionary *subitem1 = [item objectForKey:@"subitem1"]; 

它只是在那裏NSDictionary,所以你可以使用它作爲一個。

我真的建議登錄您的JSON對象的Objective-C的表示,它可以更容易地使用它:

NSLog(@"%@", json); 

警告
我們強烈建議您檢查對象的類型,你在假設它們確實是字典,字符串或數組之前加載。如果他們不是,你會注意到你的應用程序將會崩潰。

+0

是的,我確實玩過,並計算出如何將subitem1加載到字典中,但只給出了subitem1中所有項的鍵/值對。我需要的是subitem1的數組。是的,我做NSLog的所有東西...我只是簡化了我的示例,以便於閱讀 – Jesse 2011-12-29 16:22:16

+0

您可以遍歷NSDictionary的鍵:'for(NSString * key in subitem1)NSLog(@「%@:%@」, key,[subitem1 objectForKey:key]);' – 2011-12-29 16:23:14

+0

實際上,subitem1實際上是子項目,每個子項目都是「子項目」。所以就像我有一個NSArray項目一樣,我需要一個NSArray的子​​項目 – Jesse 2011-12-29 16:23:36