如何在RESTKIT映射之前更改JSON

Zhe*_*hen 5 mapping json objective-c restkit

我正在使用RESTKIT来映射从服务器返回的JSON.

从服务器获得的JSON结果如下

{"term":"Zh","results":{"users":[{"id":{"$oid":"4ebe59970a614e0019000055"},"term":"some text","score":1}]}
Run Code Online (Sandbox Code Playgroud)

如何将上述JSON结果转换为以下内容:

{"results":{"users":[{"uid":"4ebe59970a614e0019000055","text":"some text"}]}
Run Code Online (Sandbox Code Playgroud)

另外,我在哪里可以这样做,以便RESTKIT映射将使用转换的JSON而不是初始的JSON?

下面是我用来管理JSON和映射的加载器类

-(void)getObjects
{
    RKObjectManager *sharedManager = [RKObjectManager sharedManager];
    [sharedManager loadObjectsAtResourcePath:self.resourcePath delegate:self];
}

- (void)request:(RKRequest*)request didLoadResponse:(RKResponse*)response {
    NSLog(@"Loaded PAYLOAD successfully for %@, with response %@", self.resourcePath , [response bodyAsString]  );
}


- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects 
{
}


+ (void)setManagerAndMappings
{
    RKObjectManager* manager = [RKObjectManager objectManagerWithBaseURL:SERVER_URL];
    RKObjectMappingProvider* provider = [[RKObjectMappingProvider new] autorelease];

    //User Object Mapping
    RKObjectMapping* userMapping = [RKObjectMapping mappingForClass:[User class]];
    [userMapping mapKeyPath:@"_id" toAttribute:@"uid"];

    [userMapping mapAttributes:@"avatar_url",@"created_at",@"email",@"name",@"nickname",@"follower_count",@"following_count",@"answer_count",@"new_notification_count",@"new_questions_count",@"is_following",@"facebook_configured",@"twitter_configured",@"description",@"approved",@"type", nil];
    [provider setMapping:userMapping forKeyPath:@"user"];

}
Run Code Online (Sandbox Code Playgroud)

Beb*_*ber 1

对我来说,唯一的解决方案是在服务器级别修改返回的对象。如果不能,只需返回服务器的映射即可。