0

我正在使用 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"}

如您所见,缺少“用户”类名!(我无法更改 serverur 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 所以发送是空的:(

4

1 回答 1

1

我发现了我的错误!

[[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"}}
于 2012-10-16T08:48:22.677 回答