当CoreData实体是JSON集合的一部分时,RestKit JSON映射

时间:2014-01-28 16:47:10

标签: json core-data restkit

我想我必须有一个解决方案,但我还没找到。

我收到此结构的JSON响应:

{
    description: SomeString,
    type: ACTIVITY,
    timestamp: 1224043200000,
    creationTime: 1224043200000,
    userIdentification: 1111-2222-3333,
    value: 2000
}

“Activity”是我的CoreData实体的名称。如何将此JSON映射到我的数据模型?到目前为止,我发现的所有示例都假设一个类似于这种格式的JSON:

{
    activity: {
        description: SomeString,
        timestamp: 1224043200000,
        creationTime: 1224043200000,
        userIdentification: 1111-2222-3333,
        value: 2000
    }
}

2 个答案:

答案 0 :(得分:0)

我假设您有多个可能不同的type,每个都有一个关联的实体......

为每个实体定义映射。请勿将这些直接连接到响应描述符。相反,使用块(setObjectMappingForRepresentationBlock:或匹配器)创建RKDynamicMapping实例,该块检查进入的数据的type并返回相应的映射。

如果您的回复在单个响应中包含多个不同的type,那么您可能希望将上述内容与KVC验证结合起来,以拒绝使用错误类型创建的任何对象。您还需要一些不同的响应描述符或某些东西来应用每个不同的实体映射......

答案 1 :(得分:0)

您可以在github上查看RestKit仓库的ObjectMapping部分。要映射您的json响应,您可以使用nil keyPath,如https://github.com/RestKit/RestKit/wiki/Object-mapping#mapping-values-without-key-paths所述。

正如Wain所说,您应该使用动态映射来决定哪个类将使用您接收的json对象进行映射,具体取决于某个属性具有的值。这里解释了如何使用动态映射:https://github.com/RestKit/RestKit/wiki/Object-mapping#dynamic-object-mapping。我知道现在已经很晚了,但是这对未来的某些人有帮助。