2011-12-29 87 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