Objective-c: преобразовать массив словарей JSON в NSDictionary

#objective-c #nsdictionary

#objective-c #nsdictionary

Вопрос:

Итак, у меня есть следующая структура в JSON, которая, как я понимаю, представляет собой массив объектов пары ключ / значение:

 {
"notification": [
    {
        "uid": "20",
        "count": "4"
    },
    {
        "uid": "48",
        "count": "0"
    },
    {
        "uid": "49",
        "count": "0"
    },
    {
        "uid": "53",
        "count": "0"
    }
]
}
 

Анализ этого с помощью SBJson приведет к созданию коллекции словарей с одной парой ключ / значение в каждом.

Я хотел бы «объединить» все эти словари в один словарь со многими парами ключ / значение. Кстати, не беспокоясь о дубликатах.

Каков наилучший способ сделать это? Как я могу перебирать NSDictionary, получая доступ к каждому элементу по одному и извлекая его ключ и значение?

Есть идеи по этому поводу?

Спасибо.

—Конор

Ответ №1:

Просто выполните итерацию по уже существующему массиву NSDictionary s. В этом и заключается удобство JSON: вы легко получаете полезные структуры данных из строки вашего канала.

 NSArray *notifications = [[theFeedString JSONValue] objectForKey:@"notification"];  
// or whatever JSON helper you are using
for (NSDictionray *dict in notifications) {
   NSInteger uid = [[dict objectForKey:@"uid"] intValue];
   NSInteger count = [[dict objectForKey:@"count"] intValue];
   // do something with uid and count
}
 

Комментарии:

1. Спасибо за это .. довольно очевидно и просто, но в мою защиту скажу, что это была пятница: D

Ответ №2:

  1. Создайте пользовательское уведомление класса со свойствами uid и count .
  2. Чтобы выполнить итерацию по NSDictionary / NSArray, используйте for инструкцию. Создайте и инициализируйте свой объект уведомления с проанализированными данными json на каждой итерации
  3. Добавьте этот объект в новый массив или словарь (для словаря вы можете создать ключ, который будет таким же, как uid , например)