Сохранение JSON-ответа на NSDictionary - PullRequest
1 голос
/ 24 января 2012

Это то, что мой JSON возврат;

{
    "1": {
        "name": "Sharon",
        "telephone": "48-9929329483"

    },
    "2": {
        "name": "Sage",
        "telephone": "48-9560333267"
    },
    "3": {
        "name": "Alex",
        "telephone": "48-8467982378"
    }
}

Мне нужно сохранить это в NSDictionary. Моя работа заключается в следующем;

 NSDictionary *contentOfDictionary = [responseString JSONValue];

NSDictionary* studentDictionary = [contentDictionary objectForKey:@"1"];
NSString *nameOfStudent = [studentDictionary objectForKey:@"name"];
NSString *nameOfStudent = [studentDictionary objectForKey:@"telephone"];

NSDictionary* studentDictionary1 = [contentDictionary objectForKey:@"2"];
NSString *nameOfStudent1 = [studentDictionary objectForKey:@"name"];
NSString *nameOfStudent1 = [studentDictionary objectForKey:@"telephone"];

..... etc

Так вот, что я делаю, чтобы сохранить атрибуты в dictionaries и strings. Но проблема в том, что я жестко кодирую значение ключа 1,2,3 etc .. (например: [contentDictionary objectForKey:@"2"];)

На самом деле я не знаю, сколько студентов будет в файле JSON. Там может быть 100 или даже больше. Итак, как я могу написать это так, чтобы код автоматически читал JSON-ответ (все 100 записей) и сохранял его в NSDictionary и наоборот?

примечание: я думаю, мне нужно использовать цикл for или что-то в этом роде.

Ответы [ 4 ]

4 голосов
/ 24 января 2012

Похоже, у вас есть словарь в "contentsOfDictionary", где ключи - это "1", "2", ..., а значения - это словари, содержащие имена / телефонные номера. Так что вам просто нужно перебрать все значения:

NSMutableArray *studentDictionaries = [[NSMutableArray alloc] init];
for (NSDictionary *studentDictionary in contentOfDictionary.allValues)
{
    [studentDictionaries addObject:studentDictionary];
}
1 голос
/ 24 января 2012

Если каждая запись словаря в вашем ответе JSON имеет уникальную нумерацию и увеличивается без пробелов, то вы можете сделать следующее:

NSMutableArray *studentDictionaries = [[NSMutableArray alloc] init];
NSUInteger index = 1;
NSDictionary *studentDictionary;
while (studentDictionary = [contentDictionary objectForKey:[NSString stringWithFormat:@"%d", index++]]) {
    [studentDictionaries addObject:studentDictionary];
}
0 голосов
/ 25 января 2012

Вместо использования NSDictionary для хранения responsestring JSONValue

 NSDictionary *contentOfDictionary = [responseString JSONValue];

используйте NSArray для хранения responsestring JSONValue

  NSArray *arr= [responseString JSONValue];

Таким образомВы получите общее количество, каждый объект в массиве является словарем, к которому легко получить доступ.

0 голосов
/ 24 января 2012

Взгляните на NSJSONSerialization , доступную с iOS5 (или платформы SBJSON).Вы получите анализ JSON и встроенный в объекты obj-c.

...