【Exception处理】-报错:java.util.LinkedHashMap cannot be cast to ……;errorCode:5010000!

        异常出现场景代码如下:
            List<AssessmentDayVo> dayResultList = mobileService.queryDayWeight(LoginInfo.getDeptCode());
	    logger.info("【日货量】循环前集合:{}",JSON.toJSON(dayResultList));
	    for(int i=0; i<dayResultList.size();i++){
	    	        logger.info("【日货量】循环中:{}",JSON.toJSON(dayResultList.get(i)));
	    	AssessmentDayVo assessmentDayEntity=dayResultList.get(i);
			provinceInWeight += Double.parseDouble(assessmentDayEntity.getProvinceInWeight());
			throughWeight += Double.parseDouble(assessmentDayEntity.getThroughWeight());
			transitWeight += Double.parseDouble(assessmentDayEntity.getTransitWeight());
			transProvinceWeight += Double.parseDouble(assessmentDayEntity.getTransProvinceWeight());
			double hourWeight = Double.parseDouble(assessmentDayEntity.getProvinceInWeight()) + Double.parseDouble(assessmentDayEntity.getThroughWeight()) 
							  + Double.parseDouble(assessmentDayEntity.getTransitWeight()) + Double.parseDouble(assessmentDayEntity.getTransProvinceWeight());
			dayTotalWeight = dayTotalWeight + hourWeight;		
			hourMap.put(Integer.parseInt(assessmentDayEntity.getHour()), hourWeight);
		}

标注红色部分为报错处,报错如下:

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.ymdd.galaxy.report.api.vo.mobile.AssessmentDayVo

AssessmentDayVo实体类如下:

public class AssessmentDayVo implements Serializable{
	private static final long serialVersionUID = 1L;
	private String hour;
	private String provinceInWeight;
	private String transitWeight;
	private String throughWeight;
	private String transProvinceWeight;
        …省略get/set方法…

log日志如下:

【日货量】循环前集合:[{"hour":"00","provinceInWeight":"3.382","throughWeight":"2.494","transProvinceWeight":"9.159","transitWeight":"0.0"},{"hour":"01","provinceInWeight":"5.379","throughWeight":"0.324","transProvinceWeight":"10.516","transitWeight":"0.13"},{"hour":"02","provinceInWeight":"1.306","throughWeight":"0.165","transProvinceWeight":"2.751","transitWeight":"0.0"}……]

【日货量】循环中集合:{"hour":"00","provinceInWeight":"3.382","throughWeight":"2.494","transProvinceWeight":"9.159","transitWeight":"0.0"}

看看没问题,就是对象转对象,后来反复验证发现:

dayResultList.get(i)这个方法获取到的并不是实体类,而是Map,具体原因不知道(请大神留言指教)。

有了原因当时想到的法子是吧map转成json,然后把json转成相应的实体类,方法如下:

AssessmentDayVo assessmentDayEntity = JSON.parseObject(JSON.toJSONString(dayResultList.get(i)),AssessmentDayVo.class);

        完美解决!!!小白初来咋到,大神多多指教!!!


猜你喜欢

转载自blog.csdn.net/weixin_38256991/article/details/80054293
今日推荐