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

た 入场券 2022-11-26 08:53 250阅读 0赞

一。问题描述

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

2.我调用接口返回数据的getData()得到其中的data数据,再用list去接收它:

  1. @ApiOperation(value = "得到该用户的所有选修课程")
  2. @GetMapping("/getUserCourseList")
  3. @PreAuthorize("hasAnyAuthority('teacher_base','admin_base','student_base')")
  4. public List<CourseInfo> getUserCourseList(){
  5. //接收其他模块接口方法返回值
  6. HttpRespond httpRespond=courseClient.getUserCourseList();
  7. //用list接收得到其中的data数据
  8. List<CourseInfo> courseInfoList= (List<CourseInfo>) (httpRespond.getData());
  9. return courseInfoList;
  10. }

3.再用postman去测试接口,能得到相应的数据:
在这里插入图片描述
4.但是如果我遍历该集合,则会出现以下错误:

在这里插入图片描述
在这里插入图片描述

二。解决方法

1.解决思路:从list中取出来的数据需要进行转化成json格式字符串,然后再将该json格式字符串转换成对象,这样就不会再出现报错情况,能成功遍历该list列表。

2.解决方式一:使用json-lib对其进行转换

pom.xml文件导入依赖:

  1. <dependency>
  2. <groupId>net.sf.json-lib</groupId>
  3. <artifactId>json-lib</artifactId>
  4. <version>2.3</version>
  5. <classifier>jdk15</classifier>
  6. </dependency>

后台循环list代码:

  1. //遍历list
  2. for(Object object:courseInfoList){
  3. // 将list中的数据转成json字符串
  4. JSONObject jsonObject=JSONObject.fromObject(object);
  5. //将json转成需要的对象
  6. CourseInfo courseInfo = (CourseInfo)JSONObject.toBean(jsonObject, CourseInfo.class);
  7. System.out.println(courseInfo);
  8. }

3.解决方式二:使用fast-json对其进行转换

pom.xml文件导入依赖:

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>fastjson</artifactId>
  4. <version>1.2.61</version>
  5. </dependency>

后台循环list代码:

  1. //遍历list
  2. for(Object object:courseInfoList){
  3. // 将list中的数据转成json字符串
  4. String jsonObject=JSON.toJSONString(object);
  5. //将json转成需要的对象
  6. CourseInfo courseInfo= JSONObject.parseObject(jsonObject,CourseInfo.class);
  7. System.out.println(courseInfo);
  8. }

4.都能够对list进行遍历:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,250人围观)

还没有评论,来说两句吧...

相关阅读