【发布时间】:2014-10-09 16:45:20
【问题描述】:
RestKit 中的 POST 映射有问题。基本上,我的应用程序需要将 JSON 文件发送到服务器,该服务器期望 JSON 看起来与以下示例完全相同:
{
"ddata": {
"mLoad": {
"value": 13,
"unit": "%"
},
"cLoad": {
"value": 25,
"unit": "%"
}
},
"dm": "0815",
"vin": "VAPP",
"ts": "2014-09-24"
}
不幸的是,我无法使用 RestKit 创建一个映射,它会生成一个与此格式匹配的 JSON。下面是 JSON 目前的样子:
{
"ddata" : [
{
"mLoad" : {
"unit" : "%",
"value" : "25"
}
},
{
"cLoad" : {
"unit" : "%",
"value" : "37"
}
}
],
"ts" : "2014-09-24",
"vin" : "VAPP",
"dm" : "0815"
}
正如您在结果中看到的那样,ddata 内容被写为一个数组。此外,每个 "object" 的外部{ } 太多了。
跟随我的课程和映射:
映射类
@interface TopMapping : NSObject
@property NSString *dm;
@property NSString *vin;
@property NSString *ts;
@property NSSet *ddata;
@end
子映射类
@interface SubMapping : NSObject
@property NSString *object;
@property NSString *value;
@property NSString *unit;
@end
实际映射
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[TopMapping class]];
[mapping addAttributeMappingsFromDictionary:@{
@"dm": @"dm",
@"vin": @"vin",
@"ts": @"ts"
}];
RKObjectMapping *subMapping = [RKObjectMapping mappingForClass:[SubMapping class]];
[subMapping setForceCollectionMapping:YES];
[subMapping addAttributeMappingFromKeyOfRepresentationToAttribute:@"object"];
[subMapping addAttributeMappingsFromDictionary:@{
@"(object).value" : @"value",
@"(object).unit" : @"unit"
}];
[mapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"ddata" toKeyPath:@"ddata" withMapping:subMapping]];
谁能告诉我我需要改变什么才能得到想要的结果?提前致谢。 (我已经为这个问题苦苦挣扎了好几天)
【问题讨论】:
-
我认为问题在于您将
NSSet用于ddata而不是NSDictionary。NSSet本质上是一个没有重复元素的NSArray。 -
谢谢。你知道映射需要如何使用 NSDictionary 吗?
-
对不起;我对 RestKit 了解不多。如果将
NSSet替换为NSDictionary不起作用,我将无法为您提供更多帮助。
标签: ios objective-c json restkit restkit-0.20