Сопоставьте NSDictionary с объектами домена после десериализации JSON

В моем проекте я использую TouchJSON для десериализации строки JSON. В результате получается красивый NSDictionary. Я хотел бы получить данные в этом словаре в мои доменные объекты / объекты данных.

Есть ли хороший способ сделать это? Некоторые лучшие практики?

Возможно, лучше всего сохранить NSDictionary и пропустить доменные объекты?

2 ответа

Решение

Здесь есть два подхода. Либо добавить -initWithJSONString: метод к вашим объектам данных и передать JSON непосредственно им для разбивки, или добавить -initWithAttributes: метод, который берет словарь, который вы получаете при разборе JSON. Например:

- (id)initWithAttributes:(NSDictionary *)dict
{
    // This is the complicated form, where you have your own designated
    // initializer with a mandatory parameter, just to show the hardest problem.
    // Our designated initializer in this example is "initWithIdentifier"

    NSString *identifier = [dict objectForKey:MYIdentifierKey];
    self = [self initWithIdentifier:identifier];
    if (self != nil)
    {
        self.name = [dict objectForKey:MYNameKey];
        self.title = [dict objectForKey:MYTitleKey];
    }
    return self;
}

Создание -initWithJSONString: Метод будет очень похож.

Для этого нет встроенного механизма... и я создал небольшую утилиту, которая использует метафору KVC для отображения атрибутов словаря в объекте домена... утомительно и только на 1 уровне домена.

Я еще не пробовал, но Google Mantle выглядит так, как будто

Google Mantle

Он отображает JSON в вашу модель домена.

Другие вопросы по тегам