获取响应映射对象restkit v0.2.20的Json字符串

时间:2013-08-02 06:47:17

标签: iphone ios restkit restkit-0.20

目标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字符串仅与详细信息映射相关。

2 个答案:

答案 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。很可能你想做的事情可以通过其他方式完成,作为映射的一部分(可能使用映射元数据)。