在我的项目中,我使用TouchJSON反序列化JSON字符串。结果是一个漂亮的NSDictionary。我想把这本词典中的数据放到我的域对象/数据对象中。
这样做有好办法吗?一些最佳实践?
也许最好保留NSDictionary并跳过域对象?
答案 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看起来似乎可以解决这个问题:
它将JSON映射到域模型和从域模型映射。