【问题标题】:Map parent value to a property in nested dictionary with JSONModel使用 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 方法中映射它。
  • 比这复杂一点,其实我只是在抽象相关信息。
  • 更改您的模型并在此处添加名称

标签: ios objective-c iphone jsonmodel


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 2013-04-30
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 2021-06-08
    • 2016-03-20
    相关资源
    最近更新 更多