将 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 响应后未映射

RestKit 0.20 映射问题(使用来自 API 的 JSON)

RestKit 0.20:映射复杂的动态嵌套 JSON