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

Iphone 反序列化JSON后将NSDictionary映射到域对象,iphone,touchjson,Iphone,Touchjson,在我的项目中,我使用TouchJSON来反序列化JSON字符串。结果是一本漂亮的词典。我想将此词典中的数据放入我的域对象/数据对象中 有什么好办法吗?一些最佳实践 也许最好保留NSDictionary并跳过域对象 这里有两种方法。向数据对象添加一个-initWithJSONString:方法,并将JSON直接传递给它们进行分解,或者添加一个-initWithAttributes:方法,该方法使用解析JSON得到的字典。例如: - (id)initWithAttributes:(NSDiction

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

有什么好办法吗?一些最佳实践


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

这里有两种方法。向数据对象添加一个
-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似乎可以做到这一点:


它可以将JSON映射到域模型,也可以从域模型映射JSON。

我认为initWithAttributes可以,但是映射框架会更甜美。。。谢谢@安迪:是的,但是有时候,当你只需要一些轻量级的、快速的东西来覆盖基础知识时,框架就显得有些过分了。谢谢你,罗伯!在初始值设定项中使用objectForKey:方法是一个很好的方法!