【Java】无法将java.util.LinkedHashMap强制转换为X
JsonJack:无法将java.util.LinkedHashMap强制转换为X
1. 概述
Jackson是一个广泛使用的Java库,它使可以方便地对JSON或XML进行序列化/反序列化。
有时,当尝试将JSON或XML反序列化为对象集合时,可能会遇到“ java.lang.ClassCastException:java.util.LinkedHashMap无法转换为X”。

2.问题分析
简单的来说,JSON反序列化时,未提供目标信息,它将使用目标类型:LinkedHashMap。接下来,我们来模拟这样的场景。
2.1 数据准备
首先先创建已经基础类:Person。
1 public class Person {
2 private String name; // 名称
3 private int age; // 年龄
4 // …… 这里省略了getter,setter等方法。
5 }
创建一个用于测试的API接口,http://localhost:8090/tsy/cip/test/getPersion 。返回的JSON数据如下:
1 [
2 {
3 "name": "张三",
4 "age": 22
5 },
6 {
7 "name": "李四",
8 "age": 22
9 }
10 ]
我们创建测试数据,调用接口。
1 @Test
2 public void testError(){
3 RestTemplate restTemplate = new RestTemplate();
4 // 提交表单
5 HttpHeaders headers = new HttpHeaders();
6 headers.setContentType(MediaType.APPLICATION_JSON);
7 headers.add("Content-Type","application/json;charset=UTF-8");
8 //将请求头部和参数合成一个请求
9 List<Person> result = restTemplate.getForObject("http://localhost:8090/tsy/cip/test/getPersion" , ArrayList.class);
10 System.out.println("result=>" + result);
11 System.out.println("[0]Name=>" + result.get(0).getName()); // 报错java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.tsyapp.crm.domain.Person
12 }
运行结果如下:

2.2 错误分析
已经声明了类型为List<Person>,但是为什么Jackson尝试将LinkedHashMap类型转换为Book类呢?此外,LinkedHashMap来自何处?
restTemplate.getForObject,传递的对象是ArrayList.class 。所以JSON可以将他们反序列化为数组,但它并不知道数组内的对象是什么类型。
- 当未提供目标信息时,它使用默认类型LinkedHashMap。
【Java】无法将java.util.LinkedHashMap强制转换为X的更多相关文章
- java.lang.ClassCastException:java.util.LinkedHashMap不能转换为com.testing.models.Account
ObjectMapper mapper=new ObjectMapper();POJO pojo = mapper.convertValue(singleObject, POJO.class);
- java.lang.ClassCastException:java.util.LinkedHashMap不能转换为com.testing.models.xxx
后台接收前台的json字符串 转pojo 问题(Object 对应定义的pojo) ObjectMapper mapper=new ObjectMapper(); Object object = ma ...
- java.util.LinkedHashMap cannot be cast to xxx 和 net.sf.ezmorph.bean.MorphDynaBean cannot be cast to xxx
java.util.LinkedHashMap cannot be cast to com.entity.Person 使用mybatis, resultMap映射的是实体类Person, 查询出来的 ...
- 2019-8-26 LinkedHashMap 转 List [java.util.LinkedHashMap cannot be cast to com.zq.dataservice.bean.Index]
java.util.LinkedHashMap cannot be cast to com.zq.dataservice.bean.Index 上述错误是在做一个趋势投资demo时遇到的. 说的是链式 ...
- java.util.HashSet, java.util.LinkedHashMap, java.util.IdentityHashMap 源码阅读 (JDK 1.8)
一.java.util.HashSet 1.1 HashSet集成结构 1.2 java.util.HashSet属性 private transient HashMap<E,Object> ...
- JDK1.8源码(九)——java.util.LinkedHashMap 类
前面我们介绍了 Map 集合的一种典型实现 HashMap ,关于 HashMap 的特性,我们再来复习一遍: ①.基于JDK1.8的HashMap是由数组+链表+红黑树组成,相对于早期版本的 JDK ...
- java.util.HashSet, java.util.LinkedHashMap, java.util.IdentityHashMap 源码阅读 (JDK 1.8.0_111)
一.java.util.HashSet 1.1 HashSet集成结构 1.2 java.util.HashSet属性 private transient HashMap<E,Object> ...
- java中,null值可以被强制转换为任何类型
java中,null值可以被强制转换为任何类型
- Java中父类强制转换为子类的可能
之前徒弟问了一个问题, 在Java中, 父类对象到底能不能转换成对应的子类对象? 到底能不能, 今天就来说说这个问题, 先看下面一段代码: package cn.com.hanbinit.test; ...
- java.util.LinkedHashMap cannot be cast to
Jackson转换泛型List出现错误java.util.LinkedHashMap cannot be cast to com.xxx ObjectMapper mapper = new Objec ...
随机推荐
- mysql:数据库加解密查询
解密:SELECT CONVERT (AES_DECRYPT(UNHEX( column_name), '密钥') USING utf8) AS column_name,from table_name ...
- sync.Once
保证在 Go 程序运行期间的某段代码只会执行一次 func main() { o := &sync.Once{} for i := 0; i < 10; i++ { o.Do(func( ...
- Selenium私房菜系列7 -- 深入了解Selenium RC工作原理(2)【II】
继续前一篇的问题,为什么Selenium RC中的Selenium Server需要以这种代理服务器的形式存在?其实,这和浏览器的"同源策略"(The Same Origin Po ...
- 雪花算法-Java分布式系统自增id
1.雪花算法的用途 分布式系统中ID生成方案,比较简单的是UUID(Universally Unique Identifier,通用唯一识别码),但是其存在两个明显的弊端: 一.UUID是128位的, ...
- shell_Day03
嗯,这是第二天,吧 wc word count 统计文本文件中的字符个数 -l 查看行数 -w 查看字符个数 -c 查看文件大小(字节) cut 用来分割文件内容 -d 指定分隔符,delimit ...
- sxt_(011_014)_显示添加书籍
一.数据库设计 create table book( bookid int auto_increment primary key, bookname varchar(16), bookprice do ...
- Object.assign() 方法浅析
Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. const target = { a: 1, b: 2 ,c:3,e:6}; cons ...
- 004. html篇之《标签分类和嵌套规则》
html篇之<标签分类和嵌套规则> 一.常用标签 (1) <div></div> 一个区块容器标记,可以包含图片.表格.段落等各种html元素 (2) <sp ...
- (0514)芯王国-志锐-Sd卡高速控制-AXI验证
(1)commit (2)core (3)generate (4)struct 结构体 (5)
- 51电子-STC89C51开发板:安装驱动
全部内容请点击目录列表查看: 51电子-STC89C51开发板:<目录> --------------------------- 正文开始 ---------------------- ...