【问题标题】:Mapping an object to JSON using RKObjectMapping使用 RKObjectMapping 将对象映射到 JSON
【发布时间】:2013-01-30 20:29:51
【问题描述】:

我对 RKObjectMapping 有点陌生,我在搞清楚这一点时遇到了一些麻烦。

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

{
  "myObjects": [...]
}

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

我将如何进行对象映射来做到这一点?

【问题讨论】:

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


    【解决方案1】:

    对不起,我误解了你的问题。如果我要这样做,我会使用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"];
    

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

    【讨论】:

    • 这里没有引用我为 myObjects 拥有的对象映射。
    • 已更新答案,希望对您有所帮助,如果没有,您能给我更多信息吗?
    • 这个想法是我想像这样序列化成一个 JSON 对象: { "visuals": [{ "color": "blue", "damage": "none" }, { "color ": "红色", "伤害": "重"}] }
    • 哦,你有 Objc-C 对象并想创建 JSON 对象?我假设相反。这是正确的吗?
    • 是的,这是正确的。不幸的是,似乎很难找到将 Obj-C 对象映射到 JSON 对象的示例,而不是相反。
    【解决方案2】:

    经过一番折腾后,我想通了:

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

    【讨论】:

      猜你喜欢
      • 2014-03-19
      • 2019-05-27
      • 1970-01-01
      • 2018-05-16
      • 2012-04-23
      • 2014-11-07
      • 2023-03-22
      • 2017-12-24
      • 1970-01-01
      相关资源
      最近更新 更多