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

 @GetMapping("/list2")public List<EmployeeModel> list2() {List<EmployeeModel> employeeModels = restTemplate.getForObject("http://SPRINGCLOUD-EMPLOYEE-PROVIDER/emp/list", List.class);employeeModels.forEach(System.out::println);return employeeModels ;}

运行的时候,在遍历的时候,就报了java.util.LinkedHashMap cannot be cast to…这个异常

后来仔细想了一下,调用过程中数据类型的变化:服务提供者返回的是LIst集合,但是标记了@RequestBody,所以返回的时候会把List集合转变成json的形式(内部是jackjson技术支持的)
然后服务消费者使用restTemplate.getForObject(),第二个参数传入接受的类型(就是将响应体中内容以什么类型封装)
如果像上面的写法,就会再把提供者返回的json转变成list,但是这个list跟之前不一样(一个是jackjson转变的,一个是restTemplate转变的,可能内部机制不一样)
所以遍历集合就会报上面的异常

改进方法:

  1. restTemplate.getForObject()以String类型接受,也即接受的是一个json字符串

    // 将响应体内容以String格式接受,即json字符串
    String json = restTemplate.getForObject("http://SPRINGCLOUD-EMPLOYEE-PROVIDER/emp/list",String.class);
    
  2. 再使用阿里巴巴的fastjson将json字符串转变成list集合

    // 将json字符串转集合
    List<EmployeeModel> employeeModels = JSON.parseArray(json, EmployeeModel.class);
    
  3. 现在就是一个正常的List集合了,可以遍历之类的操作

  4. 以上是自己在学习时个人的理解,如有不对,谢谢指正

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

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

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

  2. 【FastJson】FastJson一个Bug java.util.LinkedHashMap cannot be cast to com.alibaba.fastjson.Jsonobject

    1.背景 我们原本使用fastjson 1.2.47,后来要升级版本,升级到 1.2.70,升级之后,发现我们的程序报错 Exception in thread "main" ja ...

  3. 在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 ...

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

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

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

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

  6. class java.util.LinkedHashMap cannot be cast to xxxx.xxx.xxxx

    错误 java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class com.itran.cor ...

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

    解决java.util.LinkedHashMap cannot be cast to com.km.pojo.ItemCat com.alibaba.fastjson.JSONObject cann ...

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

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

  9. java.util.LinkedHashMap cannot be cast to xxx.xxx.xxx

    /*** 例: List<JavaBean> pojo= (List<JavaBean>) map.get("tableData");* 遇到错误如下:ja ...

最新文章

  1. 互联网引发全面深刻产业变革
  2. 用不惯VMware?试试这款更轻量级的虚拟机!
  3. logrotate机制和原理
  4. x509代码实例java_Java X509AttributeCertificate.getIssuer方法代码示例
  5. webpack --- html-webpack-plugin
  6. Android动画及滑动事件冲突解决(转载)
  7. 如何修改 asp.net core 5 程序的默认端口号?
  8. pkcs1转pkcs8 php,openssl RSA密钥格式PKCS1和PKCS8相互转换
  9. 圣诞节生成头像微信小程序源码1.3.0
  10. 耳目一新的在线答疑服务背后的核心技术
  11. 电脑计算机里怎么找恢复出厂设置,普通电脑怎么恢复出厂设置
  12. 对象的可访问性(C++)
  13. docker安装bwapp
  14. js 计算当前时间到下个整点时间,差多少分钟,多少秒
  15. 令人耳目一新的人类进化,读《人类简史》有感
  16. parameter与argument,property与attribute,这些翻译意思相近的词的区别
  17. 【我不熟悉的css】css使用background-clip,实现圆角彩色的边框,文字渐变色
  18. 阿里腾讯的文化产业路线
  19. 使用vue2实现打印在线word文件,文件流形式打印在线word,预览打印
  20. JAVA 第二周学习笔记

热门文章

  1. 一、Docker—简介及安装
  2. 微信跳一跳外挂辅助流程 (MAC+iOS)
  3. 制作缩略图、远程缩略图
  4. maven管理的项目导入时pom报错
  5. openstack 之 novnc流程分析
  6. New Bing AI搜索引擎初体验-基于ChatGpt4
  7. 跳板攻击原理及如何追踪定位攻击者主机(下)
  8. BLE蓝牙断开连接原因对照表
  9. react中的map遍历
  10. kali Linux显卡驱动安装(双显卡笔记本注意事项和解决方案)