如何从json字典自动创建模型类(NSObject)?

时间:2016-03-09 12:58:57

标签: ios objective-c json parsing nsdictionary

有没有办法创建字典或json响应的模型类(包装器)?因为在我的应用程序中有许多web服务,所有WS都包含大数据。如果我一直在创建,那么创建NSObject类需要花费很多时间来检查Null数据和Encode-Decode对象。或者请建议我手动创建所有NSObject是正确的方法吗?我不想解析直接字典。 感谢。

3 个答案:

答案 0 :(得分:3)

最后,我为 iOS和Android 提供了非常简单快速的模型类生成器工具。只需复制并粘贴您的答案并从工具中获取Model Class。

  • AppStore(Mac AppStore)下载 JSON加速器
  • 从浏览器复制JSON响应。(响应必须是JSON验证)。

  • 粘贴在Json Accelerator中>>单击“生成并使用模型名保存”。

  • 选择输出语言并添加基类名称(不需要类前缀)
  • 请参阅以下生成的模型类和SubModel Classe (它是Autometicaly生成所有JSON对象类)


使用此类>>>  例如,您的JSON Respoce词典是

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}
  • 制作Employee Array,然后使用下面的代码创建具有Created Model Classes的Object,你必须使用For loopenumerateObjectsUsingBlock任何一个用于create,然后使用Add in Mutable Array。

    NSArray * arrTemp = [NSArray arrayWithArray:yourResponceDict [@" employees"]];     NSMutableArray * myMutableArray = [NSMutableArray array];

    [arrTemp enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        Employee *aObj = [Employee modelObjectWithDictionary:obj];
        [myMutableArray addObject:aObj];
    }];
    

此工具非常简单,可以节省时间,用于创建Json对象类,以便在开发中的任何位置解析数据。

答案 1 :(得分:2)

为此,您可以使用BaseModel,ObjectMapper或EVReflection开源项目等模块。它们都是您可以在项目中使用的开源模块。

答案 2 :(得分:0)

你看过NSKeyValueCoding了吗?它有几种你可能会觉得有用的方法,包括下面的方法,可以根据对象的字典表示设置对象的所有值。

[object setValuesForKeysWithDictionary:dictionary];

假设您能够以某种方式从字典表示中确定对象的类,您可以使用它;此外,您可以使用dictionaryWithValuesForKeys:

轻松地将对象转换为字典