2011-12-29 4 views
3

У меня есть коллекция json. Я могу отлично разбираться в 1 уровне, но каждый элемент в основной коллекции содержит в себе коллекцию. Я не совсем уверен, как получить доступ к «пункта», чтобы получить коллекцию к югу, как я сделал с основной коллекцией ...ios json parsing sub collection

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. Мне нужно собрать коллекцию из них, а в текущем - другую.

+0

Включите немного, что ваш JSON выглядит как – Sam

+0

Включены некоторые json – Jesse

ответ

0

item будет просто словарь или массив, если он один в объекте JSON. Например, вы должны быть в состоянии сделать это:

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

Это просто в там NSDictionary, так что вы можете использовать его как единое целое.

Я действительно рекомендую протоколирование представление Objective-C вашего объекта JSON, это облегчает работу с ним:

NSLog(@"%@", json); 

Предупреждение
Настоятельно рекомендуется проверить тип объектов, которые вы прежде чем предположить, что они действительно словари, строки или массивы. Если это не так, вы заметите, что ваше приложение будет разбиваться.

+0

Да, я играл раньше и понял, как загрузить subitem1 в словарь, но это дает мне пары ключ/значение всех элементов внутри subitem1 , Мне нужен массив subitem1. Да, я делаю NSLog все это ... Я просто сжал свой пример для удобства чтения. – Jesse

+0

Вы можете перебирать ключи из NSDictionary: 'for (NSString * key в subitem1) NSLog (@"% @:% @ ", key, [subitem1 objectForKey: key]); ' –

+0

Фактически, subitem1 действительно будет subitem, и каждый подэлемент будет« subitem ». Так как у меня есть NSArray элементов, мне нужен NSArray подтема – Jesse