无法解析类型java.lang.Object_java类型转换异常

无法解析类型java.lang.Object_java类型转换异常问题场景:1、前端传一个数组,2、后台Controller用map接收。如下@PostMapping(“add/xxxx”)publicResponseObjaddXXXX(@RequestBodyMap<String,Object>map){}3、Service业务类方法中,直接获取数组并转化为实体的集合:List<XXXX&g…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

问题场景:

1、前端传一个数组,

2、后台Controller用map接收。如下

 @PostMapping("add/xxxx")
    public ResponseObj addXXXX(@RequestBody Map<String, Object> map){
}

3、Service业务类方法中,直接获取数组并转化为 实体的集合:

List<XXXX> list = (List<XXXX>) map.get("list");

4、然后使用拉姆达表达式对集合进行过滤的时候,报错!

//所有名字集合 
ArrayList<String> XXXXNameList = XXXXDao.getAllXXXXNameListById(id); 
//过滤list,名字不在XXXXNameList中的
List<XXXX> collect = list.stream().
                    filter(e -> !XXXXNameList.contains(e.getName())).collect(Collectors.toList());

报错信息:

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

 

分析:

打断点调试,发现 map是LinkedHashMap,得到的其实是个map,而不是实体类。

无法解析类型java.lang.Object_java类型转换异常

 

解决方案:

1、将map转成json,在转成对象(这种方式比较简单,很多json工具方法都有)

2、反序列化成对象

List<XXX> list1 = (List<XXX>) map.get("list");
ObjectMapper mapper = new ObjectMapper();
List<XXX> list = mapper.convertValue(list1, new TypeReference<List<XXX>>() { });

这下再对list过滤就ok了

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197531.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spring中 junit4 和 junit5 使用

    spring中 junit4 和 junit5 使用@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(“classpath:ApplicationContext.xml”)@SpringJUnitConfig(locations=”classpath:ApplicationContext.xml”)

    2025年8月9日
    3
  • dotnet开源手册_c++基本框架

    dotnet开源手册_c++基本框架DotNetNuke 5 C#版本解读之1--架构介绍

    2022年4月21日
    72
  • eclipse的创建java程序步骤

    eclipse的创建java程序步骤众所周知,java是一个比较折腾的语言==当然这个折腾更多在软件上,在你好不容易在一大堆英文中下到jdk以及合适的idea或者eclipse合适版本,然后辛辛苦苦配置好的系统变量以后,打开界面以为新建就好了?那不可能,打开新建的时候你一定是崩溃的下面我们一起来看看如何在eclipse建立一个合适的项目包来开开心心的写helloworld吧!1.打开新建点击”包“输入一个包名这里尽量用规范的命名,这里我们给一个Test2.然后出来个界面你以为就可以开始写我们的helloworld了吗?

    2022年7月9日
    20
  • ios最新屏蔽更新描述文件(屏蔽ios14系统升级描述文件)

    崇尚专注乐于分享愿为您带来生活中的便利每晚8点期待您的到来捧场目前我们的公众号已经为上万人提供了帮助,新来的小伙伴,如果你不想错过每一期的资源,需要获取往期分享的资源,可以在公众号菜单栏找到“资源汇总”即可获取到全部资源。公众号内所有资源皆为免费分享,不收取任何费用.公众号内资源大部分来源于网络,不保证永久有效.资源都经过小编实机测试,但不保证兼容所有机型.公众号经过一系列改版现在推送…

    2022年4月16日
    60
  • 织梦中data文件夹是存放什么内容的

    织梦中data文件夹是存放什么内容的

    2021年10月7日
    61
  • MYSQL 数据库引擎

    MYSQL 数据库引擎MySQL 数据库引擎取决于 MySQL 在安装的时候是如何被编译的 要添加一个新的引擎 就必须重新编译 MYSQL 在缺省情况下 MYSQL 支持三个引擎 ISAM MYISAM 和 HEAP 另外两种类型 INNODB 和 BERKLEY BDB 也常常可以使用 如果技术高超 还可以使用 MySQL API 自己做一个引擎 下面介绍几种数据库引擎 nbsp nbsp nbsp ISAM ISAM 是一个定义明确且历经时间考验

    2025年9月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号