RestKit的动态映射会解决这个复杂的JSON映射吗?

时间:2013-10-04 19:49:16

标签: ios restkit restkit-0.20

我在我的应用程序中使用RestKit,它需要使用以这种方式构造传入数据的现有同步服务:

{
  "timestamp": 000000000001,
  "status" : 0,
  "syncData":[
    {
      "errors":[],
      "rows":[ {"name":"AAA", ...},
               {"name":"BBB", ...}, 
               ...],
      "rtype":"FOO" },
    {
      "errors":[],
      "rows":[ {"id":1, "description":"ZZZ", ....},
               {"id":2, "description":"YYY", ....}, 
               ...],
      "rtype":"BAR"
    }, ...

我是RestKit的新手,并试图找出解决这个问题的最佳方法,以及将相同的数据结构发送回服务器的补充问题。我正在使用Core Data和RestKit。

我已经映射了一个SyncResponse实体来保存顶级数据,我想要得到的是FOO对象的集合,“AAA”,“BBB”等,以及BAR对象的集合,“ZZZ”,“YYY”等,以及其他几十个对象集合,其类别由“rtype”字段表示。

我已经阅读了有关动态映射的文档部分以及一些示例代码和帖子,但我不知道动态映射在这种情况下是如何工作的,因为它不是{"a":{is A}, "b":{is B}}格式。这是否可以使用动态映射,如果是这样,我在这里缺少什么概念?

假设有可能,我如何从FOO和BAR的集合开始发回数据,当然用SyncUpdateRequest包装器替换SyncResponse?

1 个答案:

答案 0 :(得分:1)

我认为你不能单独使用一组映射来做到这一点。

您最好的选择可能是为每个项目创建映射,为整个结构创建一个映射。整体映射只是将数组提取为字典的NSArray。获得数组后,您可以自己迭代它,检查类型,然后应用RKMapperOperation来执行映射。


要发送更新请求,我会将其视为一个完全独立的内容。我将构建一个字典数组,其中字典具有某些信息的“普通”键/值对以及rows的“复杂”键/值对。然后,您的请求映射就是这个字典数组(包括自定义部分)和行(应该是类的响应映射的反转)。然后,RestKit应该能够以标准方式处理它(与上面的响应映射的复杂性相比)。