目标C:
RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[Response class]];
[responseMapping addAttributeMappingsFromArray:@[@"status",@"description"]];
[manager addResponseDescriptorsFromArray:@[
[RKResponseDescriptor responseMapping
pathPattern:nil
keyPath:@"Details"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]
]];
JSON:
{
"Details" : {
"status":"2012",
"description":"Not valid"
},
"Address":{
...
}
}
以上是我得到的回复。它有“详细信息”和“地址”。
详细信息映射显示在上面的代码中。地址映射以相同的方式完成,但目前并不那么重要。
在映射结果中,我得到了两个对象,即细节和地址。
我希望从操作中获取DetailMapping的json字符串。在RKObjectRequestOperation *操作中,我能够获得包含详细信息和地址的完整json字符串,但我希望json字符串仅与详细信息映射相关。
答案 0 :(得分:2)
目标C:
RKManagedObjectRequestOperation *operation = [manager
appropriateObjectRequestOperationWithObject:reqObj
method:RKRequestMethodPOST
path:loginServiceURL parameters:nil];
[operation setWillMapDeserializedResponseBlock:^id(id deserializedResponseBody)
{
NSDictionary *dictionary = [[NSMutableDictionary alloc] init];
dictionary = deserializedResponseBody;
NSString *Details = [dictionary objectForKey:@"Details"];
return deserializedResponseBody;
}];
答案 1 :(得分:1)
这不是RestKit的设计目的,因此它提供的结果是映射内容,而不是源响应数据。
您选择这样做的方式可能需要处理整个JSON数据以提取您想要的部分。要获取单个字典,您可能需要对映射操作进行子类化,并将其注入处理请求的操作中。
考虑为什么要访问JSON。很可能你想做的事情可以通过其他方式完成,作为映射的一部分(可能使用映射元数据)。