Restkit - 如何使用可变键名映射json对象

时间:2013-12-10 13:12:22

标签: ios iphone json restkit restkit-0.20

我必须映射这个结构,但我不知道如何识别“br.myservice.com”部分,因为它改变了,我不能建立一个常规RKObjectMapping,因为它使用固定字符串。

{ "objects": {
    "br.myservice.com": {
        "url": "http://br.myservice.com",
        "name": "Brazil",
        "flag": "br",
        "countries": ["br"]
    },
    "us.myservice.com": {
        "url": "http://us.myservice.com",
        "name": "United States",
        "flag": "us",
        "countries": ["us"]
  }
}

2 个答案:

答案 0 :(得分:2)

你需要像addAttributeMappingFromKeyOfRepresentationToAttribute:这样使用:

RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[MyObject class]];
mapping.forceCollectionMapping = YES;
[mapping addAttributeMappingFromKeyOfRepresentationToAttribute:@"host"];
[mapping addAttributeMappingsFromDictionary:@{
    @"(host).url": @"url",
    @"(host).name": @"name",
    ... and so on ....
}];

答案 1 :(得分:0)

假设在编写代码时您不知道密钥:

您需要创建一个动态映射(RKDynamicMapping),其中包含一个块,用于检查收到的JSON字典并动态创建(并返回)自定义对象映射。

如果您知道这些键,只需将它们全部添加,任何适当的键都将在运行时使用。