我正在使用 RestKit 将对象发布到服务器或获取它。 GET 与映射配合得很好。 但 POST 却没有。
以下是接收到的 JSON 的形式:
{"user":{"id":98,"notification":false,"id":98,"token_session":"506934689"}}
问题是发送的 JSON 的 post 对象具有以下形式:
{"id":98,"notification":false,"id":98,"token_session":"506934689"}
如您所见,缺少“user”类名! (我无法更改 server API 以使用两种 JSON 格式)
这是我的代码,如果有人可以帮助我!
RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[UserObject class]];
[mapping mapKeyPath:@"id" toAttribute:@"id"];
[mapping mapKeyPath:@"token_session" toAttribute:@"token_session"];
[mapping mapKeyPath:@"notification" toAttribute:@"notification"];
[[RKObjectManager sharedManager].mappingProvider setMapping:mapping forKeyPath:@"user"];
[[RKObjectManager sharedManager].mappingProvider registerMapping:mapping withRootKeyPath:@"user"];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:[mapping inverseMapping] forClass:[UserObject class]];
//Route :
[[RKObjectManager sharedManager].router routeClass:[UserObject class] toResourcePath:@"user"];
以及该对象的帖子:
RKObjectManager * manager = [RKObjectManager sharedManager];
[manager postObject:user usingBlock:^(RKObjectLoader* loader)
{
loader.delegate = self;
}];
非常感谢。
编辑:
我试过这个:
RKObjectManager * manager = [RKObjectManager sharedManager];
[manager postObject:[CurrentSession sharedInstance].user usingBlock:^(RKObjectLoader* loader)
{
loader.sourceObject = [NSDictionary dictionaryWithObject:[CurrentSession sharedInstance].user forKey:@"user"];
loader.resourcePath = url;
loader.delegate = self;
}];
但是发送的 JSON 是空的:(
最佳答案
我发现我的错误了!
[[RKObjectManager sharedManager].mappingProvider setMapping:mapping forKeyPath:@"user"];
[[RKObjectManager sharedManager].mappingProvider registerMapping:mapping withRootKeyPath:@"user"];
RestKit 似乎不喜欢这两行。 我只保留了第一行,发送的 JSON 就变成了我所期望的
{"user":{"id":98,"notification":false,"id":98,"token_session":"506934689"}}
关于ios - RestKit POST 发送 JSON 不包含映射路径/类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12909533/