java fastjson 泛型_解决fastjson泛型转换报错的解决方法

错误信息

Exception in thread "main" java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.xh.demo.UserDO

泛性类

@Data

public class ResultSetDTO {

private Integer totalSize;

private Integer count;

private List records;

}

实体类

@Data

public class UserDO {

private String id;

private String name;

}

Demo测试

public class AppDemo {

public static void main(String[] args) {

ResultSetDTO resultSetDTO = new ResultSetDTO();

resultSetDTO.setTotalSize(10);

resultSetDTO.setCount(10);

List list = new ArrayList<>();

UserDO userDO = null;

for (int i = 10000; i < 10003; i++) {

userDO = new UserDO();

userDO.setId(i + "");

userDO.setName("TEST_" + i);

list.add(userDO);

}

resultSetDTO.setRecords(list);

String jsonString = JSON.toJSONString(resultSetDTO);

System.out.println(jsonString);

ResultSetDTO resultSet = JSON.parseObject(jsonString, ResultSetDTO.class);

List records = resultSet.getRecords();

// 转换是报异常

for (UserDO user : records) {

System.out.println(user.getName());

}

}

debuge 调试时发现 resultSet.getRecords(); 返回的是 ArrayList 类型,不是 ArrayList 类型。由于类型引用必须强制指定目标对象,因此违背了 FastJson 规范,所以报:Exception in thread "main" java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.xh.demo.UserDO。

e0cd51d8e9927d90f1cafbad518a9647.png

解决方法

// 方法一

JSONObject parseObject = JSON.parseObject(jsonString);

List records = JSON.parseArray(parseObject.getString("records"), UserDO.class);

for (UserDO user : records) {

System.out.println(user.getName());

}

// 方法二

ResultSetDTO resultSet = JSON.parseObject(jsonString, ResultSetDTO.class);

List records = JSONObject.parseArray(resultSet.getRecords().toString(), UserDO.class);

for (UserDO user : records) {

System.out.println(user.getName());

}

// 方法三

ResultSetDTO resultSet = JSON.parseObject(jsonString, new TypeReference>(){});

List records = resultSet.getRecords();

for (UserDO user : records){

System.out.println(user.getName());}

}

到此这篇关于解决fastjson泛型转换报错的解决方法的文章就介绍到这了,更多相关fastjson 泛型转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通达OA header身份认证绕过漏洞复现

通达OA是中国通达公司的一套协同办公自动化软件&#xff0c;通达OA2013&#xff0c;通达OA2016&#xff0c;通达OA2017 存在身份认证绕过漏洞&#xff0c;攻击者可以利用漏洞生成cookie&#xff0c;实现未授权访问。 1.漏洞级别 高危 2.漏洞搜索 fofa title"office An…

leetcode mysql 排名_Leetcode178.分数排名(中等)

题目编写一个 SQL 查询来实现分数排名。如果两个分数相同&#xff0c;则两个分数排名(Rank)相同。请注意&#xff0c;平分后的下一个名次应该是下一个连续的整数值。换句话说&#xff0c;名次之间不应该有“间隔”。-----------| Id | Score |-----------| 1 | 3.50 || 2 | 3.6…

原子变量 java_Java原子变量详解

实现全局自增id最简单有效的方式是什么&#xff1f; java.util.concurrent.atomic 包定义了一些常见类型的原子变量。这些原子变量为我们提供了一种操作单一变量无锁( lock-free )的线程安全( thread-safe )方式。实际上该包下面的类为我们提供了类似 volatile 变量的特性&…

java post 中文乱码问题_java post中文乱码问题

java post中文乱码问题function addcategory() {if (document.myform.category.value "") {alert("商品分类不能为空");return;}//var categorydocument.getElementById("category").value;var c document.myform.category.value;alert(c);wit…

mysql连接数详解_MySQl 修改最大连接数详解

今天使用ide连接线下MySQL报错Can not connect to MySQL server. Too many connections&#xff0c;报错很明确&#xff0c;与MySQL的连接数满了。想想也是&#xff0c;每起一个服务都会创建MySQL连接池&#xff0c;占用不少的长连接。用ide查看了一下&#xff0c;原来最大连接…

java 保存 设置_java – 保存设置的实现

我正在写一些关于android的游戏.我想知道如何保存设置,以免出现更新问题.例如,我使用序列化保存设置,我有类GameCharpublic class GameChar implements Serializable{int health;int damage;Sword sword;}但后来我决定为我的游戏角色增加价值装甲,我改变了类&#xff1a;public…

java struct工作原理_Struts2的工作原理(图解)详解

Struts2的工作原理上图来源于Struts2官方站点&#xff0c;是Struts 2 的整体结构。一个请求在Struts2框架中的处理大概分为以下几个步骤(可查看源码&#xff1a;https://github.com/apache/struts):1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的…

java导出富文本到word_富文本编辑器内容实现word导出下载,请各位大神们指点,感激不尽...

展开全部给个我之前的写的例子给你action 层public ActionForward dataExport(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {try {response.setContentType("application/vnd.ms-excel;charsetUTF-8");Strin…

java线程切换速度_为什么说线程太多,cpu切换线程会浪费很多时间?

cpu在执行代码的时候【以下说明只在linux平台上&#xff0c;win我不会】该程序已经是ELF executable file 且该文件内部按ELF格式存储了机器指令数据同时该文件必须引用linux 的核心api库【动态库】libc.so 及linux-x86-64.so 核心文件。启动的时候操作系统会识别该文件的ELF文…

java私塾 java篇_Java私塾跟我学系列——JAVA篇 五、

五&#xff1a;Java如何做到让机器理解我们想要做的东西用一个图来描述这个过程会比较容易理解&#xff1a;1&#xff1a;编写代码首先把我们想要计算机做的事情&#xff0c;通过Java表达出来&#xff0c;写成Java文件&#xff0c;这个过程就是编写代码的过程。如上图所示的Hel…

java借口案例实现_java实现接口的典型案例

废话不多说&#xff0c;直接上代码package com.car;interface Carr{//汽车名称String getName();//获得汽车售价int getPrice();}class BMW implements Carr{public String getName(){return "BMW";}public int getPrice(){return 300000;}}class CheryQQ implements…

java 旅行家的预算_洛谷 P1016 旅行家的预算 Java解法

洛谷 P1016 旅行家的预算 Java解法洛谷 P1016 旅行家的预算 Java解法package com.two;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);double D1 sc.nextDouble();// 两个城市之间的距离double C …

java语言执行过程_Java程序的运行过程(执行流程)分析

万事知其然&#xff0c;要知其所以然&#xff0c;所以本节带大家来详细了解一下 Java 程序的执行过程。从《使用记事本编写运行Java程序》一节的案例可以看出&#xff0c;Java 程序的运行必须经过编写、编译和运行 3 个步骤。编写&#xff1a;是指在 Java 开发环境中进行程序代…

java smp_什么是SMP系统

SMP(Symmetric Multi-Processing)&#xff0c;对称多处理结构的简称&#xff0c;是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。在这种技术的支持下&#xff0c;一个服务器系统可以同时运行多个处理器&#xff0c;并共享内存和其他的主机资…

php搭建云服务器,云服务器上如何搭建php环境

1) 安装libtool和libtool-ltdl[rootlocalhost mysql]# yum -y install "libtool*"[rootlocalhost mysql]# yum -y install "libtool-ltdl*"2) 手工修改gd库文件PHP 5.4 也有一些 Bug&#xff0c;在检测 gd 库时会报错&#xff0c;需要我们手工修改。命令如…

php实现文本替换,php 如何实现文字替换

php实现文字替换的方法&#xff1a;首先创建一个PHP示例文件&#xff1b;然后输入代码“str_replace("iwind", "kiki", "i love iwind, iwind said");”&#xff1b;最后输出执行结果即可。在php替换字符效率最高也是最简单字符替换函数str_repl…

php 删除指定html标签,php删除html标签的三种解决办法

分享下PHP删除HTMl标签的三种方法。方法1&#xff1a;直接取出想要取出的标记function strip($str){$strstr_replace("","",$str);//$strhtmlspecialchars($str);return strip_tags($str);}//edit by www.jbxue.com?>方法2.PHP 中有个 strip_tags 函数…

php加载autoload,php自动加载类__autoload()的方法_PHP教程

本文章来给大家简单的介绍一下关于php自动加载类__autoload()的方法&#xff0c;希望此方法对各位同学会有所帮助哦。作用&#xff1a;当在程序中需要实例化一个类&#xff0c;刚好这这类又不是在本文件中&#xff0c;则需要用包含函数将外部文件包含进来。但是&#xff0c;当要…

php http_user_agent 微信浏览器改变为其他浏览器,微信内置浏览器HTTP_USER_AGENT

随着微信的普及和微信公众号的营销日益增多&#xff0c;我们所面对的开发不再仅仅局限于传统的网站&#xff0c;微信开发也成为了我们程序猿的一项必修课程。我们可以借助微信开发者工具进行微信小程序和微信公众号网页开发&#xff0c;但是在微信公众号网页开发过程中&#xf…

达内php第三次月考,达内第三次月考

1. 下列不属于浏览器内置的对象的是&#xff1a;()A. navigatorB. documentC. windowD. request正确答案&#xff1a;D2. Servlet 可以存储数据的三个不同的作用域是()。A. 请求、会话和上下文B. 响应、会话和上下文C. 请求、响应和会话D. 请求、响应和上下文正确答案&#xff…