将 JSON 键值映射到 RestKit 0.20.1 中的核心数据属性
Posted
技术标签:
【中文标题】将 JSON 键值映射到 RestKit 0.20.1 中的核心数据属性【英文标题】:Mapping JSON key values to Core Data attributes in RestKit 0.20.1 【发布时间】:2013-05-29 16:33:36 【问题描述】:鉴于此 JSON:
"company": "Big Inc."
"products": [
"category": "",
"daily_sales":
"2013-04-13": 23
"2013-05-27": 67
"2013-05-28": 89
,
"category": "",
"daily_sales":
"2013-04-13": 23
"2013-05-27": 67
"2013-05-28": 89
,
...
]
我想将它展平并保存在这样的对象中:
出售 公司(字符串) 类别(字符串) 日期(日期) 销售额(整数)所以上面的 JSON 示例会生成 6 个对象。
如何配置 RestKit 中的映射以将键(日期)作为映射值包含到新对象中?
【问题讨论】:
一个单独的对象来容纳这些部分?您不能,因为 JSON 包含一个数组,您如何将所有数组内容映射到单个对象?还是我误解了你的问题? 我想保存它去规范化并为每个日期保存一个对象 - “所以上面的 JSON 示例将生成 6 个对象。” 我认为 RestKit 无法自动为您做到这一点。您需要在映射数据之前对其进行操作,或者将数据映射到另一个对象,然后对其进行后处理。 也许你是对的。但是在使用 RKObjectManager 时,这似乎不是一个很好的方式来挂钩映射链。您需要一个 RKObjectRequestOperation 才能设置willMapDeserializedResponseBlock
块。我想我需要复制 RKObjectManager 中的 getObjectsAtPathForRelationship...
和 getObjectsAtPathForRouteNamed
方法来设置该块。
【参考方案1】:
RestKit 映射无法做到这一点(从 0.20.1 开始)。
您可以修改响应以使其对 RestKit 友好。我在 RKObjectManager 上创建了一个类别,以便轻松提供一个块来修改响应:
https://gist.github.com/gunnarblom/5677324
【讨论】:
以上是关于将 JSON 键值映射到 RestKit 0.20.1 中的核心数据属性的主要内容,如果未能解决你的问题,请参考以下文章
使用 RestKit 0.20 映射时在 JSON 中向上遍历
使用 Restkit 0.20 映射此类与键的键值编码不兼容
使用 RESTKIT 0.20 映射未命名值的 JSON 数组
Restkit 0.20 对象在获取 json 响应后未映射