Импорт объектов JSON в NSArray - PullRequest
1 голос
/ 19 марта 2012

Попытка разобрать этот объект JSON в target-C и создать NSArray с этими объектами.Первое значение является счетчиком и является специфическим для объекта.Все остальные значения являются уникальными.

{ "myData": [
["1","1","110","dollar","8.0","2.8","0.1","11.6"],
["2","1","110","euro","4.0","3.2","1.5","4.4"],
["3","1","120","rupier","6.0","2.9","1.3","10.8"],
["4","1","120","dinero","4.0","3.3","1.5","4.4"],
["5","2","130","drahmer","8.0","2.9","1.3","11.2"],
] }

Пробовал этот код:

 NSDictionary* json = [NSJSONSerialization 
                          JSONObjectWithData:myData
                          options:kNilOptions 
                          error:&error];

    NSArray *currencyInformation = [json objectForKey:@"myData"];

Но объектов там нет.Хотя счетчик массива равен 5.

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Каждый объект в массиве является самим массивом, поэтому:

NSDictionary* json = [NSJSONSerialization 
                      JSONObjectWithData:myData
                      options:kNilOptions 
                      error:&error];

NSArray *currencyInformation = [json objectForKey:@"myData"];

for (NSArray *info in currencyInformation) {
    // Then access each "column" with [info objectAtIndex:0,1,2,3,...]
}
1 голос
/ 19 марта 2012

В этой структуре данных вам нужно получить доступ к вещам по индексу, например,

for (NSArray *currency in currencyInformation) {
    NSLog(@"Currency: %@", [currency objectAtIndex:3]);
}

Если вы хотите получить доступ к вещам по ключу, вам потребуется изменить JSON, чтобы использовать массив объектов вместо массива массивов. Примерно так:

{ 
    "myData": [
        {
            "primaryKey" : 1,
            "currency"   : "dollar",
            <other keys + values>...
        },
    ]
}

В этом случае вы можете теперь сделать что-то вроде:

for (NSDictionary *currency in currencyInformation) {
    NSLog(@"Currency: %@", [currency valueForKey:@"currency"]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...