如何使用可选的URL参数映射GET请求的不同JSON响应

时间:2017-11-07 02:06:23

标签: ios objective-c mapping restkit restkit-0.20

我需要使用可选的URL参数对网址执行GET请求。

基本网址类似于http://host/user/explore,可选择查询http://host/user/explore?who=VALUE&category=VALUE&service=VALUE以获得更准确的结果。

对于第一种情况,响应来自根目录,例如:

{
  "professionals": [
    {
        "_id": "59e8576cb524cf44a435844b"
    }
   ],
 "salons": [
    {
        "_id": "59e857bbb524cf44a4358454"
    }
   ]
}

我能够通过设置响应描述符成功映射响应,例如:

RKResponseDescriptor *response = [RKResponseDescriptor
                                  responseDescriptorWithMapping:[Explore map1]
                                  method:RKRequestMethodGET
                                  pathPattern:@"user/explore"
                                  keyPath:nil                    
       statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
return response;

(请注意[Explore map1]帐号用于映射NSArray的“专业”,另一个用于“沙龙”NSObjects

但是,当我查询http://host/user/explore?who=VALUE&category=VALUE&service=VALUE时,我的回复JSON变为:

{
  "_id": "59f6f9fc36e51720da2e85f4"
},
{
  "_id": "92x2f9fc36e51720da2e66d5"
}

实际返回的对象都是相同类型(并且根目录中不再有键)。

所以很明显,我的RKResponseDescriptorRKObjectMapping无法正确处理此案例。

我调查过使用RKDynamicMappingRKRoute并且无法真正了解它们的工作原理,或者它们是否适用于我的情况......

1 个答案:

答案 0 :(得分:0)

你的网址是:http://host/user/explore?who=VALUE&category=VALUE&service=VALUE 所以就这样做:

   A            B      C   D   E   F  G   H   I  J   K   L   M . . .
1 LEC. NAME  LEC. ID   A   B+  B-  B  B-  C+  C  C-  D   E   F
2 MARK       123abc    1   1
3 JEAN       123def        1
.
.
.