问题描述

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

相关代码如下

 public List<DocInfoRela> getFilePath() {String url = serviceUrl + "/common/getFilePath";List<DocInfoRela> docInfoRelas = restTemplate.getForObject(url, List.class);return docInfoRelas;}

生产者代码

消费者代码

但是接收到List之后,在便利的时候却报错了,报错内容如下:

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to cn.chinatowercom.postaccounting.entity.DocInfoRela

ERROR 2022-11-17 15:09:32 [dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to cn.chinatowercom.postaccounting.entity.DocInfoRela] with root cause

相关代码和如图截图:

解决问题

方式1

我个人比较喜欢这种方案

定义返回List

    public  List<DocInfoRela> getFilePath() {String url = serviceUrl + "/common/getFilePath";List<DocInfoRela> docInfoRelas = restTemplate.getForObject(url, List.class);return docInfoRelas;}

然后将list再次转为json串,然后由json串再转为list

代码如下

         // 从数据库获取到数据List<DocInfoRela> DocInfoRelasList = this.getFilePath();// 将list再次转为json串,然后由json串再转为listString docInfoRelaStrings = JSON.toJSONString(DocInfoRelasList);DocInfoRelasList = JSON.parseArray(docInfoRelaStrings, DocInfoRela.class);

方式2

返回结果以String类型接受,也即接受的是一个json字符串

代码如下

 public String getFilePath() {String url = serviceUrl + "/common/getFilePath";String docInfoRelas = restTemplate.getForObject(url, String.class);return docInfoRelas;}

然后再使用阿里巴巴的fastjson将json字符串转变成list集合

代码如下

          // 从数据库获取到文件路径String jsonString = this.getFilePath();// 将json字符串转集合List<DocInfoRela> docInfoRelas = JSON.parseArray(jsonString, DocInfoRela.class);

方式3

备注:这个我没有试过,在网上找到的一种方案

首先导入net.sf.json 类

    <dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.3</version><classifier>jdk15</classifier></dependency>

然后 使用JSONObject中的方法, 先将数据转成json字符串, 在转成实体对象即可。

JSONObject jsonObject=JSONObject.fromObject(objectStr); // 将数据转成json字符串
Person per = (DocInfoRela)JSONObject.toBean(jsonObject, DocInfoRela.class); //将json转成需要的对象

总结

以上就是遇到java.util.LinkedHashMap cannot be cast to…的几种解决思路,我个人喜欢第一种,如有什么问题,欢迎讨论留言

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

  1. maven引用servlet_解决Maven 项目报错 java.httpservlet和synchronized使用方法

    使用java8 的lanmbe表达式时,使用java1.8编译,则会报错 需要在pom.xml的中添加 org.apache.maven.plugins maven-compiler-plugin 2 ...

  2. 【Java】IDEA编译Java项目报错 java: 找不到符号 的解决方法

    IDEA编译Java项目报错java: 找不到符号,情况如下所示: 解决方法: 先删除out文件夹,然后选择File → Invalidate Caches → Invalidate and Rest ...

  3. 【解决】控制台报错Uncaught TypeError: Object(...) is not a function at eval (vue-router.esm-bundler.js

    打开http://localhost:8080/,控制台报错 Uncaught TypeError: Object(...) is not a functionat eval (vue-router. ...

  4. java工作空间报错,java更改工作空间后报错

    java更改工作空间后报错 [2021-02-10 21:27:05]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/ ...

  5. 解决tomcat运行报错java.lang.UnsatisfiedLinkError: apache-tomcat-7.0.37\bin\tcnative-1.dll:Can load AMD 64

    http://www.apache.org/dist/tomcat/tomcat-connectors/native/ 到该地址下下载一个tomcat-native-1.2.2-win32-bin压缩 ...

  6. JAVA三种数组转链表的方式 适用环境 Arrays.asList报错java.lang.UnsupportedOperationException

    1.Arrays.asList 适用于Long.Integer.String等类型 不适用于基础类型long int 等 而且转变的List长度固定 无法实现添加.删除操作 Integer[] x = ...

  7. 【Java】报错 java: 找不到符号符号:类 xxx位置:程序包 xxx.xxx

    嗯- 字面意思,包出问题了呗 解决方案 1. settings设置 File => settings => Build,Excution,Deployment => Build To ...

  8. 控制台报错:java.lang.ClassNotFoundException: javax.xml.bind.JAXBException之解决方法

    控制台报错:java.lang.ClassNotFoundException: javax.xml.bind.JAXBException之解决方法 参考文章: (1)控制台报错:java.lang.C ...

  9. 解决IntelliJ IDEA报错Error:Cannot determine path to ‘tools.jar‘ library for 17 (C:\Program Files\Java\jd

    解决IntelliJ IDEA报错Error:Cannot determine path to 'tools.jar' library for 17 (C:\Program Files\Java\jd ...

最新文章

  1. SQLite - 下载安装与使用(Command Line Shell For SQLite)
  2. 有关java的读书软件吗_我手机没JAVA,能用什么读书软件、
  3. stackoverflow上Java相关回答整理翻译FAQ top 100
  4. 7用Eclipse进行JSP开发
  5. string 转比较运算符_运算符
  6. 【分享】 codeReview 的重要性
  7. [Alpha]Scrum Meeting#5
  8. Asp.net下from认证统一认证配置
  9. c语言定义一个strcmp函数,定义一个strcmp函数实现两个字符串比较,函数原型为int strcmp(char * p1,...
  10. python和java学哪个好-学python还是java python和java哪个好入门
  11. CSDN排名规则变化略谈
  12. SQL增删改查基本语法整理
  13. 经典论文-SqueezeNet论文及实践
  14. audit2allow命令提示No module named sepolgen.audit
  15. Redundant Variable 多余变量
  16. 2017 Multi-University Training Contest 3 solutions BY 洪华敦
  17. 一键快速设置图层lisp程序_AE脚本-多图层一键快速排列 Staircase V1.03 + 使用教程...
  18. python-生产者消费者模型_线程_线程互斥锁_GIL全局解释器锁
  19. 手把手教你微软的Visual Studio 2022社区版编程工具安装和使用(图文详解)
  20. Linux之vi和vim编辑器常用命令

热门文章

  1. 西门子S71200自建数据类型统计设备OEE的方法
  2. [HDU 6305]RMQ Similar Sequence
  3. 数学图形(1.14) 十字星形线
  4. 量变到质变所需要的努力
  5. Excel的统计函数(1)
  6. “浙里办“项目单点登录、埋点、二次回退的问题
  7. 利用eclips进行java开发
  8. 千寻位置NTRIP网络基准站
  9. 狂神说 SpringBoot笔记
  10. Planned Delivery Time Calculation