3月8
转换异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.heckjj.apps.modules.smartpush.dto.RecommendDTO(实体类)
1、前端封装JSON值,后台需要List<实体类>接收
Map map = jsonObject.getInnerMap();
List<RecommendDTO> recommendDTOlist = (List<RecommendDTO>) map.get("xxx");
2、进行forearch循环的时候报错
recommendDTOlist .forEach((item)->{})
3、从redis中获取数据后进行遍历
List<RecommendDTO> recommendDTOlist = redisUtil.get(defaultCacheKey);
for (RecommendDTO recommendDTO : defaultRecommendList) {
}
报错信息:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.heckjj.apps.modules.smartpush.dto.RecommendDTO
4、打断点调试查看发现里面封装的是两个Map 而不是实体类而是个LinkedHashMap
5、解决方法
ObjectMapper mapper = new ObjectMapper();
List<RecommendDTO> recommendDTOlist = (List<RecommendDTO>) map.get("xxx");
List<RecommendDTO> recommendDTOlist = mapper.convertValue(list1, new TypeReference<List<RecommendDTO>>() { });
记住引入包路径是下面这两个
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
来源:Heck's Blog
地址:https://www.heckjj.com/post/645/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!
Map map = jsonObject.getInnerMap();
List<RecommendDTO> recommendDTOlist = (List<RecommendDTO>) map.get("xxx");
2、进行forearch循环的时候报错
recommendDTOlist .forEach((item)->{})
3、从redis中获取数据后进行遍历
List<RecommendDTO> recommendDTOlist = redisUtil.get(defaultCacheKey);
for (RecommendDTO recommendDTO : defaultRecommendList) {
}
报错信息:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.heckjj.apps.modules.smartpush.dto.RecommendDTO
4、打断点调试查看发现里面封装的是两个Map 而不是实体类而是个LinkedHashMap
5、解决方法
ObjectMapper mapper = new ObjectMapper();
List<RecommendDTO> recommendDTOlist = (List<RecommendDTO>) map.get("xxx");
List<RecommendDTO> recommendDTOlist = mapper.convertValue(list1, new TypeReference<List<RecommendDTO>>() { });
记住引入包路径是下面这两个
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
来源:Heck's Blog
地址:https://www.heckjj.com/post/645/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!