java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx 类型转换异常

错误场景:
  1. 后端代码 项目中调取远程微服务返回的数据,用map集合接收数据进行处理,然后遍历集合信息的时候报错 !!!

  2. 项目中后台Controller 报错代码如下:

    @RequestMapping("getsadaData")
    public Map<String, List<YxtPmVO>> getSaData() {
    
    	// 获取微服务的路径
    	String url = sadaUrl + "sada/pm/getPmYsWs";
    	// 服务返回的数据
    	WrappedResult info = restUtil.postForObject(url, MultiValueMap.class, null,WrappedResult.class, null,MediaType.APPLICATION_FORM_URLENCODED);
    	// 用map集合接收数据
    	Map<String, ArrayList<YxtPmVO>> map = (Map<String, ArrayList<YxtPmVO>>) info.getData();
    	
    	//集合信息
    	List<YxtPmVO> highList = null;
    	
    	// 获取map中value对象的信息
    	for (Map.Entry<String, List<YxtPmVO>> entry: map.entrySet()) {
    		// 直接获取数组并转化为 实体的集合
    		highList = entry.getValue();
    	}
    	//对集合信息进行遍历过滤的时候,报错!
    	for (YxtPmVO yxtPmVO: highList) {
    		
    	}
    	// 返回值
    	return data;
    }
    
  3. 报错信息如下:

    java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.xxx.xxxx.entity.xxxx

  4. 错误解决方案:

    原因是debug断点调试,发现返回的数据map是LinkedHashMap,获取得到的其实还是个map,而不是实体类

    方案有以下两个:

    1、将map集合转成json,再转成实体类对象

    2、将数据集合,反序列化成对象

    // 需要导的包
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.type.TypeReference;
    
    
    ObjectMapper mapper = new ObjectMapper();
    List<YxtPmVO> list = mapper.convertValue( highList, new TypeReference<List<YxtPmVO>>() { });
    
    	 这下再对list进行遍历 就ok了 !
    
    
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monika、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值