【发布时间】:2015-02-05 04:23:32
【问题描述】:
我正在处理使用所有重要信息、URL、正文参数、URL 参数、方法类型填充对象 (CrsApi) 的数据。我有这些集合,想循环并调用一个方法来执行每个方法并返回 JSON 对象。
根据我的谷歌搜索,使用 Spring 执行此操作的最佳方法是通过 RestTemplate.Exchange() 函数。但是,它不会让我为“Class responseType”添加一个类,给我下面提到的错误。我不想制作不同的专门功能,或者必须创建一个特定于参数的类来保存响应。我只想要一个可以以通用方式处理的普通 Json 对象,我可以用这个库来做吗?
for(Record rec : Records){
//Call API to update
CrsApi tmpApi = apiUtil.getNewApi(rec);
handleResponse(doAPICall(tmpApi));
}
public JSONObject doAPICall(CrsApi apiCall){
/** Handle putting on URL Parameters later **/
//---Error incompatible types required: org.json.JSONObject found: org.springframework.http.ResponseEntity<org.json.JSONObject>
HttpEntity<JSONObject> httpEntity = new HttpEntity<JSONObject>(apiCall.getBodyParameters());
//---
JSONObject x = restTemplate.exchange(apiCall.getURL(), apiCall.getHttpMethod(),httpEntity, JSONObject.class);
}
【问题讨论】:
-
JSONObject上的导入是什么? -
org.json.JSONObject,我认为这将是一个很好的普通对象,可以满足我的需要。不过,我们也有可用的 jackson JSONObject。
-
您是否遇到编译错误?确保类类型来自与分配对象相同的导入。因为
JSONObject可以通过许多不同的包获得,所以您很容易感到困惑。 -
不是这样,我什至尝试明确放置对象“org.json.JSONObject”。错误还说它得到了一个“org.springframework.http.ResponseEntity ”我尝试了字符串、映射等,它总是给我一种奇怪的感觉,比如 Spring 试图强迫它变成某种东西只是按原样上课
-
很奇怪,你也可以使用地图列表。比如
List<Map<String,Object>> = template.exchange('.....',List.class)
标签: java spring rest httprequest resttemplate