我对 RKObjectMapping 有点陌生,我在弄清楚这一点时遇到了一些麻烦。
我有一个类,它有一个名为 myObjects 的对象数组。这种类型的对象在其类中已经有一个对象映射。我想映射到以下类型的 JSON 对象:
{
"myObjects": [...]
}
其中 JSON 数组包含由 myObjects 确定的 JSON 对象和我已经给出的对象映射。
我将如何进行对象映射来做到这一点?
我对 RKObjectMapping 有点陌生,我在弄清楚这一点时遇到了一些麻烦。
我有一个类,它有一个名为 myObjects 的对象数组。这种类型的对象在其类中已经有一个对象映射。我想映射到以下类型的 JSON 对象:
{
"myObjects": [...]
}
其中 JSON 数组包含由 myObjects 确定的 JSON 对象和我已经给出的对象映射。
我将如何进行对象映射来做到这一点?
很抱歉我误解了你的问题。如果我要这样做,我会使用JSONKit。这允许您从 JSON 对象创建NSDictionarys
和NSArrays
从它们中序列化 JSON 对象。
如果您在项目中包含 .h/.m(这也自动包含在供应商 > JSONKit 下的 RestKit 中),您可以导入JSONKit.h
然后调用:
[myArray JSONString];
这将为您返回序列化 JSON 对象的 NSString。您可能还想看看其他一些更彻底的方法。
原始的,不正确的答案:
我认为这就是你要找的:
RKObjectMapping *visualsMapping = [RKObjectMapping mappingForClass:[Visuals class]];
[carMapping mapKeyPath:@"Color" toRelationship:@"color"];
[carMapping mapKeyPath:@"Damage" toRelationship:@"damage"];
...
carMapping = [RKObjectMapping mappingForClass:[Car class]];
[carMapping mapKeyPath:@"Model" toRelationship:@"model"];
[carMapping mapKeyPath:@"Visuals" toRelationship:@"visuals" withMapping:visualsMapping];
...
[carMapping setRootKeyPath:@"myObjects"];
在这里,您可以针对包含在其他自定义对象中的自定义对象进行制作,也可以直接映射属性,而无需指定与之配套的映射。
经过很多烦人的摆弄,我想通了:
如果我想在 JSON 对象中嵌套一个命名的 JSON 数组,我必须定义一个从数组到 JSON 数组的对象映射,然后为整个 JSON 对象定义一个映射,其中包含空键路径和使用第一个对象的关系映射。
例如:
RKObjectMapping* visualsMapping = [RKObjectMapping serializationMapping]'
[visualsMapping mapKeyPath:@"visuals" toRelationship:@"Visuals" withMapping:[Visual serializaitonMapping];
RKobjectMapping* serializaionMapping = [RkObjectMapping serializationMapping];
[serializaionMapping mapKeyPath:@"" toRelationship:@"" visualsMapping];
那么我想要的对象映射就是serializationMapping。