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

How to create Model Classes(NSObject) automatically from json dictionary?

有什么方法可以创建字典或 json 响应的模型 类(包装器)?因为在我的应用程序中有很多网络服务,所有 WS 都包含大数据。如果我一直在一个接一个地创建,那么通过检查空数据和编码解码对象来创建 NSObject Class 会花费很多时间。请建议我手动创建所有 NSObject 是正确的方法吗?我不想解析直接字典。 谢谢

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

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

[object setValuesForKeysWithDictionary:dictionary];

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

轻松地将对象转换为字典

最后我得到了非常简单和快速的模型 Class 生成器工具,用于 iOS 和 Android 两者。只需复制并粘贴您的回复,然后从工具中获取模型 Class。

  • AppStore (Mac AppStore) 下载 JSON 加速器
  • 从浏览器复制您的 JSON 回复。(回复必须 JSON 验证)。

  • 粘贴到 Json 加速器 >> 单击生成并使用您的模型名称保存。

  • Select 输出语言并添加base Class name.(Class 不需要前缀)
  • 见下面生成的模型Classes和子模型Classe (自动生成所有JSON对象Classes)


像这样使用>>> 例如,您的 JSON 资源字典是

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}
  • 制作员工数组,然后使用创建的模型创建对象 Classes 如下代码,您必须使用 For loopenumerateObjectsUsingBlock 中的任何一个来创建和然后添加可变数组。

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

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

此工具非常简单且节省时间,可用于创建 Json 对象 Classes,用于在开发中的任何地方解析数据。