使用 JSONModel 将父值映射到嵌套字典中的属性
Posted
技术标签:
【中文标题】使用 JSONModel 将父值映射到嵌套字典中的属性【英文标题】:Map parent value to a property in nested dictionary with JSONModel 【发布时间】:2014-12-03 16:28:43 【问题描述】:我什至不确定这是否可行,但我想将节点上的属性映射到数组中的每个项目,这也是节点上的属性。
JSON 示例
"productType" :
"name" : "foo",
"products" : []
所以我希望 name 的值成为每个产品的属性。
我设置了一个 productType 模型,其中有一个 NSArray,所有内容都由 JSONModel 映射。我在想有没有办法在 JSONKeyMapper 中使用 keypath?但是什么都找不到。
【问题讨论】:
所以我希望 name 的值成为每个产品的属性。 如果我理解你在说什么(还不清楚),你想要一个字典。 对于一些简单的事情,你最好扔掉 JSONModel 并只使用 NSJSONSerialization 然后在代码中做任何你需要的对象映射。 我有一个 ProductType 模型和一个 Product 模型。 ProductType 有一个产品数组。这些是通过 JSONModel 和 initWithDictionary 构建的。但我希望能够从 Product 对象中获取 ProductType.name。我想知道是否有办法在 JSONModel 使用的 keyMapper 方法中映射它。 比这复杂一点,其实我只是在抽象相关信息。 更改您的模型并在此处添加名称 【参考方案1】:您现在可以使用 JSONModel
执行此操作。
假设我们有以下模型:
@class MyModel
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSArray *products;
@end
如果完整的 JSON 文档如下所示:
"productType1":
"name": "foo",
"products": []
,
"productType2":
"name": "foo",
"products": []
,
"productType3":
"name": "foo",
"products": []
那么您应该使用[MyModel dictionaryOfModelsFrom...];
方法之一。
如果它看起来像这样:
"productTypes":
"productType1":
"name": "foo",
"products": []
,
"productType2":
"name": "foo",
"products": []
,
"productType3":
"name": "foo",
"products": []
那么你应该使用这样的另一个模型:
@class MyModelContainer
@property (strong, nonatomic) NSDictionary <MyModel> *productTypes;
@end
【讨论】:
以上是关于使用 JSONModel 将父值映射到嵌套字典中的属性的主要内容,如果未能解决你的问题,请参考以下文章