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