2

目标 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 字符串。

4

2 回答 2

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;

}];
于 2013-08-02T09:41:45.370 回答
1

这不是 RestKit 的设计目的,因此它提供的结果是映射的内容,而不是源响应数据。

无论您选择哪种方式,您都可能需要处理整个 JSON 数据以提取您想要的部分。要获取单个字典,您可能需要对映射操作进行子类化并将其注入到处理您的请求的操作中。

考虑一下为什么要访问 JSON。作为映射的一部分(可能使用映射元数据),您最有可能以其他方式完成您想要做的事情。

于 2013-08-02T07:02:24.307 回答