NO.94 RestTemplate.getForObject將PO中List的泛型變成LinkedHashMap問題的解決

我們有個PO,長這樣:
public class MyPO<T> implements java.io.Serializable{
	private List<T> data = new ArrayList<T>();
}
結果用RestTemplate.getForObject 後,不管這個T是什麼,接收到都被轉化爲LinkedHashMap,造成ClassCastException。

上網查,在這篇找到關鍵信息(這是百度快照):
You can refactor the code above to use exchange instead of postForObject, and use ParameterizedTypeReference to get a List<MyModelClass>.
For example:
ParameterizedTypeReference<List<MyModelClass>> typeRef = new ParameterizedTypeReference<List<MyModelClass>>() {
};
ResponseEntity<List<MyModelClass>> responseEntity = restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(mvm), typeRef);
List<MyModelClass> myModelClasses = responseEntity.getBody();
結果使用RestTemplate.exchange 代替getForObject 後,問題確實解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章