RestKit POST 发送 JSON 不包含映射路径/类名

Posted

技术标签:

【中文标题】RestKit POST 发送 JSON 不包含映射路径/类名【英文标题】:RestKit POST Send JSON doesn't content mappath/class name 【发布时间】:2012-10-16 07:26:47 【问题描述】:

我正在使用 RestKit 将对象发布到服务器或获取它。 GET 非常适合映射。 但 POST 没有。

这是接收到的 JSON 格式:

"user":"id":98,"notification":false,"id":98,"token_session":"506934689"

问题是当发送的 JSON 具有这种形式的帖子对象时:

"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 是空的 :(

【问题讨论】:

【参考方案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"

【讨论】:

以上是关于RestKit POST 发送 JSON 不包含映射路径/类名的主要内容,如果未能解决你的问题,请参考以下文章

使用 RestKit 发送 POST 不会返回 JSON 内容

iOS7 是不是有轻量级 JSON 到对象映射器(不是 RestKit 或 NSJSONSerialization)?

使用 RestKit 以 XML 格式发送 post 请求

Post Json Restkit 无法为 HTTP 方法“POST”类型的对象找到可路由路径

RESTKit 对象 BOOL 属性为真/假 JSON

使用 RestKit 映射的 JSON Post 后 TableView 不刷新