我必须映射这个结构,但我不知道如何识别“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"]
}
}
答案 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字典并动态创建(并返回)自定义对象映射。
如果您知道这些键,只需将它们全部添加,任何适当的键都将在运行时使用。