RestKit POST Send JSON不包含mappath / class name

时间:2012-10-16 07:26:48

标签: ios json post restkit

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

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

1 个答案:

答案 0 :(得分: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"}}