【问题标题】:Flatten request mapping hierarchy in RestKit在 RestKit 中展平请求映射层次结构
【发布时间】:2015-03-26 15:13:36
【问题描述】:

使用 RestKit,我正在尝试创建一个请求映射,将 payment 对象转换为 JSON。该对象存储子支付,其中只有一个是有效的。此有效付款由属性selectedPayment 表示。我认为典型的方法是使用关系映射但是我不希望selectedPayment 显示为嵌套键。我当前方法的结果示例如下:

{
  "requestUserId" : "6",
  "payment" : {
    "selectedPayment" : {
      "amount" : "5",
      "id" : 70,
      "type" : "SOME_TYPE"
    }
  }
}

我想要的输出如下:

{
  "requestUserId" : "6",
  "payment" : {
    "amount" : "5",
    "id" : 70,
    "type" : "SOME_TYPE"
  }
}

我已经为我的关系映射的目标键路径尝试了许多选项:@root@parent""nil。所有这些都导致了崩溃("" 除外,它将选定的付款嵌套在一个空键下)。

我可以修改用于selectedPayment 的请求映射的属性映射,以明确使用@root@parent,但这并不理想,因为它会对使用映射的其他区域产生负面影响。

这似乎是典型的行为,将“深层”对象表示转换为“浅层”JSON 表示,肯定有直接的方法吗?

【问题讨论】:

    标签: ios objective-c restkit restkit-0.20


    【解决方案1】:

    不要使用关系映射,而是在单个映射中使用键路径,导航到属性,然后提取您寻找的键。

    【讨论】:

      【解决方案2】:

      不要使用关系映射,而是使用单个映射中的键路径导航到属性并提取所需的键。因此,您将使用selectedPayment.amountselectedPayment.idselectedPayment.type 作为映射中的源键路径,并使用amountidtype 作为各自的目标键。

      【讨论】:

      • 这是我希望避免的,类似于我所说的“我可以修改用于 selectedPayment 的请求映射的属性映射......”。我将各种映射分开以允许重用,因此更改其中一个或重新实现它会破坏该目的。如果 RestKit 有一个用于映射的“前缀”属性,那就太好了,它基本上可以按照您的建议做,但以一种更可重用的方式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多