解决java.util.LinkedHashMap cannot be cast to com.km.pojo.ItemCat

com.alibaba.fastjson.JSONObject cannot be cast to com.km.pojo.ItemCat的问题

错误描述

使用redis的时候,设置json格式的序列化器,使用get获取时,因为数据较多,使用List集合
List<ItemCat> itemCats = (List<ItemCat>) redisUtils.get("itemCats");
但是获取的 ItemCat 对象并不能识别,jackson 会封装成 LinkedHashMap ,fastjson会封装成 JSONObject
遍历list集合时,for (ItemCat itemCat : itemCats) { } 就会出现上述错误

经过百度+谷歌4个小时,更换jackson为 fastjson,终于还是没有解决,因为网上的类似错误信息,都只是针对一个简单的对象进行解析,无非是设置 Mapper,或者格式化JSONObject,都不能有效解决这里的问题

最终序列化配置还是改为了最初的配置,如下:

无奈之举,新建一个简单 User对象,测试了List<User> ,竟然可以正常使用,成功的封装成 User对象,于是考虑可能是 对象中还包含对象的问题。

原因

两个实体有依赖关系


原因有可能是:

  1. 因为业务需求,查询数据库时,没有查询全部的数据,字段中含有 null值,Json无法封装为ItemCat对象
  2. 对象之间有依赖关系时,序列化和反序列化过程中出现问题,Json序列化器无法正常识别。

解决方案

本人能力有限,这里采用了一种不是很好的解决方法,如果哪路大神有更好的解决方法,请告知在下,感激不尽!

方法:在存入redis之前,先把数据格式化为 String类型的Json数据,然后存入redis,取出的时候,直接使用String类型接收数据,然后使用JSON格式化器格式化为想要的数据,再进行业务操作。

此处只显示了关键代码,目的是为了获取 List<ItemCat> 类型的数据

  List<ItemCat> itemCats = null;String itemCatJson = (String) redisUtils.get("itemCats");// 先查询 redis,若redis没有,则查询数据库if (null == itemCatJson) {System.out.println("itemCats:reids中不存在,查询数据库数据");itemCats = itemCatService.getItemCats();// 再把查询到数据,存入一份到缓存中itemCatJson = JSON.toJSONString(itemCats);redisUtils.set("itemCats", itemCatJson);} else {System.out.println("itemCats:从reids中获取到数据...");itemCats = JSON.parseArray(itemCatJson, ItemCat.class);System.out.println(itemCats);}
如果有更好的解决方法,请告知在下,不胜感激

解决java.util.LinkedHashMap cannot be cast to com.km.pojo.ItemCat问题相关推荐

  1. 解决java.util.LinkedHashMap cannot be cast to 实体类......的问题

    解决java.util.LinkedHashMap cannot be cast to 实体类-的问题 背景描述 在学习谷粒商城时,使用openfeign进行远程调用,由于有个接口返回的是R<L ...

  2. 解决java.util.LinkedHashMap cannot be cast to…

    此方法用于 解决前端传回list类型后端接收时参数类型发生改变 运行的时候,在遍历的时候,就报了java.util.LinkedHashMap cannot be cast to-这个异常 具体原因不 ...

  3. 解决java.util.LinkedHashMap cannot be cast to 的问题

    /**r.getData的数据结构是一个Json对象,用List<User>强转之后foreach遍历,出现java.util.LinkedHashMap cannot be cast t ...

  4. 解决java.util.LinkedHashMap cannot be cast to xxx(domain实体类)的问题

    一.问题描述 1.最近在做分布式项目,需要用到其他子模块接口方法返回数据,同时这个项目也是前后端分离项目,后台接口返回的格式都是封装好了的json格式,我想拿到其中的data数据,如下图所示: 2.我 ...

  5. 多种方式解决Java控制台报错 java.util.LinkedHashMap cannot be cast to.....

    问题描述 今天在使用RestTemplate调用服务的时候,因为服务提供者返回的是一个List集合,所以在使用消费者调用的时候,restTemplate.getForObject()期待返回的类型直接 ...

  6. 关于java.util.LinkedHashMap cannot be cast to 实体类......问题的出现以及解决办法

    在使用RestTemplate调用服务的时候,因为服务提供者返回的是一个List集合,所以在使用消费者调用的时候,restTemplate.getForObject()期待返回的类型直接写成了List ...

  7. 在JWT令牌转获取私有化声明时出错,java.util.LinkedHashMap cannot be cast to cn.mar.crm.sys.entity.SysUser

    在JWT令牌转获取私有化声明时,执行以下代码时报错 String jwt = req.getHeader(JwtUtils.JWT_HEADER_KEY);Claims claims = this.v ...

  8. java.util.LinkedHashMap cannot be cast to Entity

    前后端数据传输转换问题-java.util.LinkedHashMap cannot be cast to Entity 问题场景:项目前端使用json传输方式,后台接收后对象变成了LinkedHas ...

  9. java.util.LinkedHashMap cannot be cast to 问题

    今天在做项目时候出现 java.util.LinkedHashMap cannot be cast to xxx 异常.在此记录. 问题背景: 通过RestTemplate调用另一个服务接口,获取Li ...

最新文章

  1. linux 从行查看文件,linux 查看文件内容
  2. RabbitMQ 相关概念
  3. 新浪微博和SAP CRM Interaction Center(呼叫中心)的集成
  4. Java消息服务~消息属性
  5. node mysql await_javascript – node.js async / await与MySQL一起使...
  6. Git 提交失败提示无写入权限与 Linux 下创建文件的默认权限
  7. 记那些年在asp.net mvc上挖过的坑
  8. hdu 5964:平行四边形 【计算几何】
  9. 科沃斯扫地机器人阿尔法_科沃斯(Ecovacs)阿尔法地宝简单开箱
  10. XcodeGhost事件或成年内最严重信息安全事件
  11. 联想重装系统去掉保护_带有联想保护系统的电脑安装系统具体步骤如下
  12. 博客空间自动互踩刷人气
  13. Cypress下载安装+问题记录
  14. 《挚爱》简谱,网上没找到,自己写了个,非专业,敬请指教!
  15. 指南:情人节表白h5源码
  16. 可能是最全的|适合决策AI研究的自动驾驶模拟器评测(下篇)
  17. 普通计算机怎么算根号_「根号计算器」12、计算机如何实现开根号? - seo实验室...
  18. 使用U-Net 进行图像分割
  19. 敏捷开发中如何写好用户故事?
  20. SPSS如何做离散和连续变量的统计描述

热门文章

  1. 怎样用计算机命令修复软件,chkdsk磁盘修复命令工具怎么用,怎样运行chkdsk工具修复?...
  2. 乐视腾讯深度合作 超级电视26日易迅网首发
  3. ORA-01653 无法在表空间扩展的解决办法 -- 增加表空间大小或给表空间增加数据文件
  4. linux服务生产环境启动报错
  5. 联想linux改windows,G40-70、G50-70联想小新笔记本SR1000随机Linux改Windows 7系统操作指导...
  6. 完整学习笔记之Android基础(详版)
  7. 从linux上下载命令行,分享|如何在Linux命令行中下载GOG游戏
  8. ubuntu系统matlab2021a安装及设置matlab快捷方式
  9. 安卓开发使用Bmob遇到的一些问题及解决办法
  10. Java算法---发工资