在反序列化JSON之后将NSDictionary映射到域对象

时间:2010-01-27 13:37:32

标签: iphone touchjson

在我的项目中,我使用TouchJSON反序列化JSON字符串。结果是一个漂亮的NSDictionary。我想把这本词典中的数据放到我的域对象/数据对象中。

这样做有好办法吗?一些最佳实践?

也许最好保留NSDictionary并跳过域对象?

2 个答案:

答案 0 :(得分:1)

这里有两种方法。向数据对象添加-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:方法非常相似。

答案 1 :(得分:0)

没有内置机制来执行此操作...我创建了一个使用KVC隐喻的小实用程序,将字典属性映射到域对象。繁琐且只有1个域级深。

我还没有尝试过这个,但Google Mantle看起来似乎可以解决这个问题:

Google Mantle

它将JSON映射到域模型和从域模型映射。