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

一。问题描述

1.最近在做分布式项目,需要用到其他子模块接口方法返回数据,同时这个项目也是前后端分离项目,后台接口返回的格式都是封装好了的json格式,我想拿到其中的data数据,如下图所示:解决java.util.LinkedHashMap cannot be cast to xxx(domain实体类)的问题_第1张图片

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

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

3.再用postman去测试接口,能得到相应的数据:
解决java.util.LinkedHashMap cannot be cast to xxx(domain实体类)的问题_第2张图片
4.但是如果我遍历该集合,则会出现以下错误:

解决java.util.LinkedHashMap cannot be cast to xxx(domain实体类)的问题_第3张图片
解决java.util.LinkedHashMap cannot be cast to xxx(domain实体类)的问题_第4张图片

二。解决方法

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

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

pom.xml文件导入依赖:

        <dependency>
            <groupId>net.sf.json-libgroupId>
            <artifactId>json-libartifactId>
            <version>2.3version>
            <classifier>jdk15classifier>
        dependency>

后台循环list代码:

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

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

pom.xml文件导入依赖:

        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.2.61version>
        dependency>

后台循环list代码:

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

4.都能够对list进行遍历:
解决java.util.LinkedHashMap cannot be cast to xxx(domain实体类)的问题_第5张图片

你可能感兴趣的:(后台,java,json)