如何在 iOS 中使用 RestKit 来处理发送 JSON 而没有 rootkey 的 RESTful 服务器?
Posted
技术标签:
【中文标题】如何在 iOS 中使用 RestKit 来处理发送 JSON 而没有 rootkey 的 RESTful 服务器?【英文标题】:How can I handle, using RestKit in iOS, a RESTful server sending JSON without rootkey? 【发布时间】:2012-11-09 16:42:40 【问题描述】:我成功 POST 到 RESTful 服务,但它正在发回后续 json 响应;
T restkit.network:RKObjectLoader.m:202 bodyAsString: "Successful":true,"Message":"We have received 9138 message(s)","Data":null
(来自 RestKit 调试器/记录器)。 如您所见,该 JSON 中没有根密钥。 现在 RestKit 在尝试使用以下代码进行映射时会报错;
RKObjectMapping *serverResponseMapping = [RKObjectMapping mappingForClass:[ServerReply class]];
[serverResponseMapping setRootKeyPath:@""]; //tried without this and with a value but no change!
[serverResponseMapping mapKeyPath:@"Success" toAttribute:@"success"];
[serverResponseMapping mapKeyPath:@"Message" toAttribute:@"message"];
[serverResponseMapping mapKeyPath:@"Data" toAttribute:@"data"];
[[manager mappingProvider] addObjectMapping:serverResponseMapping];
当我尝试映射时,我从 Restkit 收到以下错误;
W restkit.object_mapping:RKObjectMapper.m:87 Adding mapping error: Could not find an object mapping for keyPath: ''
只是为了强调
-[serverResponseMapping setRootKeyPath:@""];
//尝试不使用这行代码,也有值但没有变化!
谁能告诉我如何解决这个问题,因为我认为我无法更改服务器?
谢谢
【问题讨论】:
【参考方案1】:终于解决了,所以我想我会更新它,以防其他人发现它有用。 如果使用 RKObjectManager postObject 消息的块构造,则可以在 ObjectLoader 中指定返回消息的接收对象;
[manager postObject:thePostMsgObj usingBlock:^(RKObjectLoader *loader)
loader.targetObject = theResponseObj;
loader.delegate = self;
loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[response Class]];
];
【讨论】:
以上是关于如何在 iOS 中使用 RestKit 来处理发送 JSON 而没有 rootkey 的 RESTful 服务器?的主要内容,如果未能解决你的问题,请参考以下文章