网络服务 - RestKit:JSON 映射不起作用 Objective-c



我使用RestKit框架连接到rest web服务。如果我想要resultlistEntries,映射看起来应该如何。我有一个json响应,像这样:

{
"resultlist.resultlist": {
    "paging": {
        "numberOfHits": 69978,
        "numberOfPages": 3499,
        "pageNumber": 1,
        "pageSize": 20
    },
    "resultlistEntries": [
        {
            "@numberOfHits": "69978",
            "@realEstateType": "7",
            "resultlistEntry": [
                {
                    "@creation": "2013-01-15T16:36:00.000+01:00",
                    "resultlist.realEstate": {
                        "@id": "68014527",
                        "@xsi.type": "search:Office",
                        "calculatedPrice": {
                            "currency": "EUR",
                            "marketingType": "RENT_PER_SQM",
                            "priceIntervalType": "MONTH",
                            "value": 4.5
                        },
                        "commercializationType": "RENT",
                        "courtage": {
                            "hasCourtage": "YES"
                        },
                        "floorplan": "false",
                        "netFloorSpace": 155,
                        "price": {
                            "currency": "EUR",
                            "marketingType": "RENT",
                            "priceIntervalType": "MONTH",
                            "value": 697.5
                        },
                        "totalFloorSpace": 155
                    }
                }
            ]
        }
    ]
}

}

和以下RestKit Code

NSString *pathPattern = @"resultlist.resultEntries";
NSString *keyPath = @"resultEntry";
RKResponseDescriptor *responseDescriptor = 
    [RKResponseDescriptor responseDescriptorWithMapping:mapping 
                                            pathPattern:pathPattern 
                                                keyPath:keyPath   
                                            statusCodes:statusCodes];

结果如下:

2013-01-15 16:49:00.102 RestKit_final[31840:c07] 
Failed with error: No response descriptors match the response loaded.

怎么了?

pathPattern用于指定将在其中使用响应描述符的端点。例如,@"/hotels/premium"作为pathPattern将意味着如果调用@"/hotels/cheap",响应描述符将不适用。您可以将其设置为nil,但我总是喜欢保持我的响应描述符尽可能具体。

JSON响应中resultlistEntry数组的keypath在技术上是resultlist.resultlist.resultlistEntries,但您可能对resultlist.resultlist部分有一些问题。我建议更改您的API以简单返回resultList,然后您所需的密钥将是resultlist.resultlistEntries

最新更新