ClassCastException java.util.LinkedHashMap cannot be cast to xxx

在调用feign接口时,返回一个DataResult对象,其中有一个字段是List<?>,我用具有相同字段的实体类进行强转,然后接收结果

 

List<实体类> list = (List<实体类>) result.get("data");

之后报错:ClassCastException java.util.LinkedHashMap cannot be cast to xxx

经过CSDN大神解疑找到原因: feign底层返回结果是Json格式,返回的List<泛型>需要指定实体类接收.

下面又加了两行代码 ,解决了问题


List<实体类> list = (List<实体类>) result.get("data");
ObjectMapper mapper = new ObjectMapper();
List<实体类> xxx= mapper.convertValue(list, new TypeReference<List<实体类>>() { });

ObjectMapper.convertValue()是用来进行类型转换的一个工具,TypeReference 是描述一个复杂泛型的工具类。

jackson objectMapper json字符串常用的方法

1.对象转json字符串

User user=new User();
String userJson=mapper.writeValueAsString(user);

2.json转换为对象

String json = "{\"name\":\"Test\"}";
Map userMap = mapper.readValue(json, test.class);

3.bean的转换

    Class class = new ObjectMapper()
       //这里直接将泛型转换为Class,
	   class.convertValue(某个泛型<T>, new TypeReference<Class>() {
        });

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值