我看到restkit文档相当不错,并且有很多关于对象建模的例子。还有一个嵌套映射的例子,但我发现我的场景与此有点不同。 RestKit文档提供了嵌套属性的示例映射,其中包含以下json格式。
来自RestKit文档的示例JSON结构:
{
"blake": {
"email": "blake@restkit.org",
"favorite_animal": "Monkey"
},
"sarah": {
"email": "sarah@restkit.org",
"favorite_animal": "Cat"
}
}
假设我的json与此有点不同;
我的JSON结构:
{
"id" : 1,
"author" : "RestKit",
"blake": {
"email": "blake@restkit.org",
"favorite_animal": "Monkey"
},
"sarah": {
"email": "sarah@restkit.org",
"favorite_animal": "Cat"
}
}
我创建了两个不同的managedobject模型,它具有以下属性和许多关系。
我的结构的两个不同实体Product和creator映射上面的JSON对象。
Product Creator
identifier <------------------- >> name
author email
favouriteAnimal
现在,我的映射对于Product model来说将是这样的;
这是我映射Product实体的方式, [mapping mapKeyPath:“id”toAttribute:“identifier”]; [mapping mapKeyPath:“author”toAttribute:“author”];
但请注意,映射嵌套字典属性对我不起作用。 // [mapping mapKeyOfNestedDictionaryToAttribute:@“creators”];
现在,在作者班上。
我无法找出映射上述JSON结构的常用方法。
答案 0 :(得分:6)
如果您可以控制网络服务,我强烈建议重新组织您的响应数据,如下所示:
{
product:
{
id: 1,
author: 'RestKit',
creators: [
{
id: 1,
name: 'Blake',
email: '...',
favorite_animal: 'Monkey'
},
{
id: 2,
name: 'Sarah',
email: '...',
favorite_animal: 'Cat'
}
]
}
}
遵循此结构,您将能够使用RestKit的嵌套映射功能,并且该关系将正确反映在对象加载器委托接收的反序列化对象中。 RestKit依赖于命名和结构标准来简化实现任务所需的代码。您的示例与键值编码标准不同,因此RK无法提供与数据格式交互的简便方法。
如果您无权访问或无法更改,我认为您需要使用映射映射已知的键值对,并使用自定义评估程序执行剩余的分配。您需要假设未知密钥实际上是关联创建者的名称值,并且它们的关联值包含每个的属性哈希值。然后使用它,然后手动重建每个对象。