RestKit:JSON 映射不起作用 Objective-c
Posted
技术标签:
【中文标题】RestKit:JSON 映射不起作用 Objective-c【英文标题】:RestKit: JSON mapping doesn't work Objective-c 【发布时间】:2013-01-16 07:19:51 【问题描述】:我使用 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 代码
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.
怎么了?
【问题讨论】:
【参考方案1】:pathPattern
用于指定将使用响应描述符的端点。例如,@"/hotels/premium"
作为 pathPattern 将意味着如果您调用 @"/hotels/cheap"
,响应描述符将不适用。您可以将其设置为nil
,但我总是希望我的响应描述符尽可能具体。
JSON 响应中 resultlistEntry
数组的 keypath
在技术上应该是 resultlist.resultlist.resultlistEntries
,但您可能对 resultlist.resultlist
部分有一些问题。我建议将您的 API 更改为仅返回 resultList
,然后您所需的密钥路径将是 resultlist.resultlistEntries
。
【讨论】:
以上是关于RestKit:JSON 映射不起作用 Objective-c的主要内容,如果未能解决你的问题,请参考以下文章