多种方式解决Java控制台报错 java.util.LinkedHashMap cannot be cast to.....
问题描述
今天在使用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.....相关推荐
- maven引用servlet_解决Maven 项目报错 java.httpservlet和synchronized使用方法
使用java8 的lanmbe表达式时,使用java1.8编译,则会报错 需要在pom.xml的中添加 org.apache.maven.plugins maven-compiler-plugin 2 ...
- 【Java】IDEA编译Java项目报错 java: 找不到符号 的解决方法
IDEA编译Java项目报错java: 找不到符号,情况如下所示: 解决方法: 先删除out文件夹,然后选择File → Invalidate Caches → Invalidate and Rest ...
- 【解决】控制台报错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. ...
- java工作空间报错,java更改工作空间后报错
java更改工作空间后报错 [2021-02-10 21:27:05] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/ ...
- 解决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压缩 ...
- JAVA三种数组转链表的方式 适用环境 Arrays.asList报错java.lang.UnsupportedOperationException
1.Arrays.asList 适用于Long.Integer.String等类型 不适用于基础类型long int 等 而且转变的List长度固定 无法实现添加.删除操作 Integer[] x = ...
- 【Java】报错 java: 找不到符号符号:类 xxx位置:程序包 xxx.xxx
嗯- 字面意思,包出问题了呗 解决方案 1. settings设置 File => settings => Build,Excution,Deployment => Build To ...
- 控制台报错:java.lang.ClassNotFoundException: javax.xml.bind.JAXBException之解决方法
控制台报错:java.lang.ClassNotFoundException: javax.xml.bind.JAXBException之解决方法 参考文章: (1)控制台报错:java.lang.C ...
- 解决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 ...
最新文章
- SQLite - 下载安装与使用(Command Line Shell For SQLite)
- 有关java的读书软件吗_我手机没JAVA,能用什么读书软件、
- stackoverflow上Java相关回答整理翻译FAQ top 100
- 7用Eclipse进行JSP开发
- string 转比较运算符_运算符
- 【分享】 codeReview 的重要性
- [Alpha]Scrum Meeting#5
- Asp.net下from认证统一认证配置
- c语言定义一个strcmp函数,定义一个strcmp函数实现两个字符串比较,函数原型为int strcmp(char * p1,...
- python和java学哪个好-学python还是java python和java哪个好入门
- CSDN排名规则变化略谈
- SQL增删改查基本语法整理
- 经典论文-SqueezeNet论文及实践
- audit2allow命令提示No module named sepolgen.audit
- Redundant Variable 多余变量
- 2017 Multi-University Training Contest 3 solutions BY 洪华敦
- 一键快速设置图层lisp程序_AE脚本-多图层一键快速排列 Staircase V1.03 + 使用教程...
- python-生产者消费者模型_线程_线程互斥锁_GIL全局解释器锁
- 手把手教你微软的Visual Studio 2022社区版编程工具安装和使用(图文详解)
- Linux之vi和vim编辑器常用命令