问题描述

使用SringBoot提供的RestTemplate发起http请求,类型转换成了LinkedHashMap

DataEntity result = restTemplate.getForObject(url, DataEntity.class);
  • 1.

报错信息如下

java.lang.ClassCastException: 
java.util.LinkedHashMap cannot be cast to com.demo.api.entity.DataEntity
  • 1.
  • 2.

解决办法

不用具体的对象接收返回数据,直接使用字符串接收,接收到之后再用Jackson进行反序列化

大致的代码如下

String result = restTemplate.getForObject(url, String.class);

ObjectMapper objectMapper = new ObjectMapper();
DataEntity data = objectMapper.readValue(json, DataEntity.class);
  • 1.
  • 2.
  • 3.
  • 4.

参考文章

  1. RestTemplate.postForObject泛型丢失返回LinkedHashMap,无法转换为java bean如何解决