NSJSONSerialization очень хорошо выполняет преобразование ваших данных JSON в пригодные для использования структуры данных как NSDictionary или NSArray. Я рекомендую его, даже больше, потому что он является частью общедоступного интерфейса Cocoa и поддерживается Apple.
Однако, если вы хотите отобразить содержимое вашего JSON на ваши объекты Objective-C, вам придется сопоставить каждый атрибут из NSDictionary / NSArray со свойством объекта. Это может быть немного болезненно, если у ваших объектов много атрибутов.
Чтобы автоматизировать процесс, я рекомендую вам использовать категорию Motis (персональный проект) для NSObject, чтобы сделать его очень легким и гибким. Вы можете прочитать, как использовать это в этом посте . Но просто чтобы показать вам, вам просто нужно определить словарь с сопоставлением атрибутов вашего объекта JSON с именами свойств вашего объекта Objective-C в ваших подклассах NSObject:
- (NSDictionary*)mjz_motisMapping
{
return @{@"json_attribute_key_1" : @"class_property_name_1",
@"json_attribute_key_2" : @"class_property_name_2",
...
@"json_attribute_key_N" : @"class_property_name_N",
};
}
, а затем выполните анализ, выполнив:
- (void)parseTest
{
NSData *data = jsonData; // <-- YOUR JSON data
// Converting JSON data into NSArray (your data sample is an array)
NSError *error = nil;
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
if (error)
return; // <--- If error abort.
// Iterating over raw objects and creating model instances
NSMutableArray *parsedObjects = [NSMutableArray array];
for (NSDictionary *rawObject in jsonArray)
{
// Creating an instance of your class
MyClass instance = [[MyClass alloc] init];
// Parsing and setting the values of the JSON object
[instance mjz_setValuesForKeysWithDictionary:rawObject];
[parsedObjects addObject:instance];
}
// "parseObjects" is an array with your parsed JSON.
// Do whatever you want with it here.
}
Настройка свойств из словаря выполняется с помощью KeyValueCoding (KVC), и вы можете проверить каждый атрибут перед установкой его с помощью проверки KVC.