ios json解析子集合

时间:2011-12-29 15:45:38

标签: ios json

我有一个json集合,我能够完美地解析1级深度,但主集合中的每个项目都有一个集合。我不太确定如何访问'item'来获取子集合,就像我对主集合一样...

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循环。

1 个答案:

答案 0 :(得分:0)

如果它是JSON对象中的一个,那么

item将只是一个字典或数组。例如,您应该能够这样做:

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

那里只是一个NSDictionary,所以你可以把它作为一个。

我真的建议记录JSON对象的Objective-C表示,这样可以更容易地使用它:

NSLog(@"%@", json);

警告
强烈建议在假设它们确实是字典,字符串或数组之前检查您加载的对象的类型。如果不是,您会注意到您的应用程序将崩溃。