使用RKObjectMapping将对象映射到JSON

时间:2013-01-30 20:29:52

标签: ios objective-c object-object-mapping

我对RKObjectMapping有点新意,我在解决这个问题时遇到了一些麻烦。

我有一个类,它有一个名为myObjects的对象数组。这种类型的对象已经在其类中具有对象映射。我想映射到以下类型的JSON对象:

{
  "myObjects": [...]
}

其中JSON数组包含由myObjects确定的JSON对象以及我已经给出的对象映射。

我如何进行对象映射来执行此操作?

2 个答案:

答案 0 :(得分:0)

对不起,我误解了你的问题。如果我这样做,我会使用JSONKit。这允许您从JSON对象创建NSDictionarysNSArrays,并从它们序列化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"];

在这里,您可以对其他自定义对象中包含的自定义对象进行制作,也可以直接映射属性,而无需指定与其一起使用的映射。

答案 1 :(得分:0)

经过大量的努力摆弄后,我想出来了:

如果我想在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。