用于发布 JSON 列表的 RestKit 映射

Posted

技术标签:

【中文标题】用于发布 JSON 列表的 RestKit 映射【英文标题】:RestKit Mapping for POSTing JSON List 【发布时间】:2016-07-14 14:57:08 【问题描述】:

是否可以使用 RestKit 向需要 JSON 字典列表的服务器发送请求? :

[
   "key1":"value1",
    "key2":"value2"
  
]

维基:https://github.com/RestKit/RestKit/wiki/Object-Mapping#mapping-without-kvc 描述了如何在响应中完成此操作 - 从 JSON 映射到对象 - 但不是反过来 - 对象到 JSON。为了使问题复杂化,我认为 URL 请求的格式为 http://www.example.com/some-name/upload - 不是很安静。

感谢您的帮助。

编辑:

感谢 Wain 迫使我更深入地寻找解决方案 - 我不确定这是否可能。根据 blakewatters 记录的 RestKit 问题 398,我解决了这样的问题:

RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromDictionary:@@"key1":@"value1", @"key2":@"value2"];


RKRequestDescriptor *requestDescriptor =
[RKRequestDescriptor requestDescriptorWithMapping:requestMapping
                                      objectClass:[MyObjectClass class]
                                      rootKeyPath:nil
                                           method:RKRequestMethodPOST];

[objectManager addRequestDescriptor:requestDescriptor];


[[RKObjectManager sharedManager] postObject:@[self.myObject]
                                       path:@"/path/myobject/upload"
                                 parameters:nil
                                    success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) 
                                        NSLog(@"Success!");
                                    
                                    failure:^(RKObjectRequestOperation *operation, NSError *error) 
                                        NSLog(@"Fail.");
                                    ];

我认为关键是将myObject放入一个数组中,然后将“rootKeyPath”和“parameters”设置为nil。

【问题讨论】:

【参考方案1】:

当然可以,基本上是一样的东西(映射)然后使用inverseMapping 和请求描述符而不是响应描述符。

无论如何,您都需要一个响应描述符,因为您需要处理响应...

【讨论】:

以上是关于用于发布 JSON 列表的 RestKit 映射的主要内容,如果未能解决你的问题,请参考以下文章

Restkit 映射列表 - 没有响应描述符与加载的响应匹配

如何使用带有 RKObjectMapping 的 RestKit 0.24 将本地 JSON 字符串映射到对象?

使用 RestKit 映射空响应的对象

RestKit 中的 elementToPropertyMapping

RestKit 和 Restlet JSON 键值

Restkit:来自 JSON parentId 的映射关系