通过JSONObject在不强制类型转换的情况下获取带泛型的对象

Fastjson2泛型陷阱大全:为什么你的List<User>总变成JSONObject? 本文深入解析Fastjson2在泛型反序列化中的常见问题,通过7个真实案例揭示`TypeReference`的正确用法、Lombok注解陷阱及版本兼容性等关键点。针对`List<User>`变`JSONObject`等典型错误,提供从基础用法到多层嵌套泛型的解决方案,帮助开发者规避Fastjson2的泛型陷阱,提升JSON处理效率与安全性。 阅读详情

前言

阿里的fastjson好用是,但是只适合存储一些简单类型,如果存储复杂的带有泛型的类型,还挺麻烦的。
特别是在往外取数据的时候。下面是取一些复杂类型的方式。

取出对象

取出没有泛型的对象类

AAA aaa= data.getObject("info", AAA.class);

取出有泛型的对象类

List<Float> info = data.getObject("info", new TypeReference<List<Float>>() {});

2021/09/13更新:像BufferedImage这种二进制文件尽量不要存到jsonObject中,会有问题。

Jackson ObjectMapper泛型反序列化:TypeReference与JavaType实战解析 在Java开发中,JSON与Java对象之间的序列化与反序列化是数据交换的核心技术。其原理基于Java反射机制和类型系统,通过类型描述将JSON结构映射为Java对象。这项技术的核心价值在于实现数据格式的无缝转换,广泛应用于API接口通信、配置文件解析和微服务间数据传输等场景。针对泛型集合如List<User>或Map<String, Object>,由于Java类型擦除机制,运行时无法保留泛型参数信息,直接使用List.class会导致反序列化结果不符合预期。Jackson库提供了TypeReferenc 阅读详情

相关推荐

Android车载多屏开发实战:从零搭建同显/异显Demo(附源码)

本文详细介绍了Android车载多屏开发的实战经验,从零搭建同显/异显Demo,涵盖多屏模拟、核心API调用、同显/异显架构实现及性能优化等关键环节。通过C++构建完整开发链路,帮助开发者快速掌握多屏同显和多屏异显技术,提升智能座舱系统的交互体验。附源码供参考。

weixin_29233857的博客 403

JSON与XML的区别

1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应

Persevering_love的博客 540

别再瞎猜了!Fluent瞬态计算时间步长到底设多少?一个公式+实战案例搞定

本文详细解析了Fluent瞬态计算中时间步长的设置方法,通过黄金公式和实战案例,帮助工程师准确确定时间步长,避免计算发散和资源浪费。文章还介绍了动态调整策略和典型工程场景的参数优化,提升仿真效率和精度。

weixin_42638178的博客 425

JSONObject解析json为指定泛型对象

有这样一个json,有没有什么办法将它一行代码转换为想要的结构:Map?答案是肯定的,借助alibaba的fastjson即可。// 注意最后的花括号不能少,TypeReference中的泛型就是要转换的自定义的类型。有了这个方法,就能省很多事了,不要自己再去解析JSONObject,一步到位。

weixin_44924358的博客 4510

【Linux】Petalinux使用QSPI FLASH引导启动

1. 预分配Flash空间使用Flash引导Petalinux做的系统,也有进阶的做法。部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。1. 预分配Flash空间根据生成的bit文件大小估算BOOT.BIN文件的大小,为Flash大概分配四个分区:boot、bootenv、kernel、bootscr,分别存放BOOT.BIN文件、u-boot的环境变量、内核文件(image.ub/zImage/uImage等)、启动脚本boot.scr。

Tesseract_9527的博客 3374

Ubuntu终端接入Codex:一行脚本搞定AI编程助手安装与配置

在开发者日常工作中,命令行终端是最高频的操作环境,而AI编程助手的出现正在改变传统的编码方式。通过将大模型能力与终端工具链结合,开发者无需切换窗口即可完成命令查询、代码生成、项目理解和自动执行等任务。Ubuntu作为服务器和开发机的主流系统,搭配Node.js生态和API Key认证,即可在本地闭环运行AI助手。本文从环境准备、密钥配置、权限管理到自动化脚本封装,系统拆解在终端中接入Codex的完整流程,并分享高频用法与实测排障经验,帮助开发者安全、高效地让AI融入命令行工作流。

weixin_29061041的博客 321

含有泛型的 JSON 反序列化问题

含有泛型的 JSON 反序列化一、背景二、分析2.1 事出诡异必有妖三、解决之道3.1 猜想验证3.2 举一反三四、总结 一、背景 今天无聊之园提了一个问题,涉及的示例大致如下: public static void main(String[] args) { String jsonString = "[\"a\",\"b\"]"; List<String> list = JSONObject.parseObject(jsonString, List.c

悟鸣的技术博客 1万+

Pointnet++环境配置+复现

深度学习点云经典网络Pointnet++

weixin_58663121的博客 8075

json反序列化时泛型处理

分别介绍fastjson、jackson、gson在反序列化数据时需要处理泛型的使用方式

dream_xin2013的专栏 4321

Blender到Unreal Engine高效资产迁移:Datasmith插件工作流详解

在3D内容创作与实时渲染领域,数字资产的无损迁移是连接创意设计与最终呈现的关键环节。其核心原理在于通过高保真的数据转换管道,替代传统离散的导出-导入流程,从而保留完整的场景层级、材质属性和关联信息。这项技术的核心价值在于极大提升了跨平台工作流的效率与数据保真度,减少了因格式转换导致的信息丢失和调试成本。它广泛应用于建筑可视化、产品设计、影视预演和游戏开发等场景,使艺术家能在专业DCC工具中专注创作,并一键同步至实时引擎进行交互式渲染与逻辑构建。本文聚焦于实现这一流程的**Datasmith**插件,并深入解

weixin_34110970的博客 268

稀疏数据分析:马蹄估计量及其理论性质

稀疏数据分析:马蹄估计量及其理论性质基本框架half-Cauchy分布为什么它叫马蹄估计量后验均值、shrinkage与κ\kappaκθ\thetaθ的边缘先验分布的阶马蹄估计的一致性收敛速率Clarke-Barron(1990)引理马蹄估计的最优收敛速率 这是对The horseshoe estimator for sparse signal这篇论文的回顾,这篇论文在Modern Bayesian statistics与Bayesian Machine Learning领域比较重要,它提出了一种新的先验

一个不愿透露姓名的博客 3797

Java 冒泡排序List<Object>泛型集合对象

public static void main(String[] args) { List<JSONObject> list=new ArrayList<>(); JSONObject j0=new JSONObject(); j0.put("id", 1); j0.put("distance",

u010391342的博客 1303

Pytorch实用教程:super(MLP,self).__init__()和super().__init__()有什么区别?

在 Python 中,super()函数用于调用父类(超类)的方法。它的使用在继承关系中非常常见,特别是在初始化继承自父类的属性时。在 PyTorch 中,这通常见于初始化nn.Module类的子类。super()的两种调用方式有微妙的差别,但在 Python 3 中常常用来达到同样的目的。这种写法在 Python 2 中非常常见。这里,super()被调用时需要指定当前类名(MLP)和当前实例(self。

若北辰 1025

解决fastjson泛型报错:com.alibaba.fastjson.JSONObject cannot be cast to X——使用new TypeReference

错误堆栈: Process: com.huawei.himovie1, PID: 20329 java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.zhangyue.group.model.bean.HolderBean at com.zhangyue.gr...

HD243608836的博客 5812

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Object型转list,jsonObject型转list方法,亲测可用

最近工作过程中,遇到一个场景,后端使用Object类型来接收前端传来的json串。但是做处理时需要将object类型的数据转为List类型。多次转换不成功,网上内容乱糟糟,在一番自己的研究后,有一个亲测可用的方法来实现Object类型数据转list。 首先,将Object类型转为jsonObject类型,这里的paramJson是Object类型的 JSONObject json = (JSONObject) JSON.toJSON(paramJson); 然后通过翻看JSONObject类的源码我

httpmc2018的博客 4万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

JSONobject不能转换强制转换成对象异常:SONoject not cast to BusinessOrderDataVo

@TOC我的异常笔记 一个异常处理了很久:大概是JSONobject not cast to BusinessOrderDataVo 意思是jsonobject对象不能强制转换成对象类型: 解决办法:BusinessOrderDataVo businessOrderDataVo = JSONObject.toJavaObject((JSONObject)list.get(0),BusinessOr...

qq_40236282的博客 2473

Java中父类强制转换子类问题解决

在Java中,父类引用可以指向子类对象,但子类引用不能直接指向父类对象。正确的类型转换需要确保父类引用实际上指向的是子类对象。通过使用instanceof关键字进行类型检查,可以有效避免。此外,合理的设计和编码习惯也可以减少不必要的类型转换需求。参考文章Java中父类强制转换子类问题解决_java_脚本之家。

weixin_44917365的博客 274

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

错误信息Exception in thread "main" java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.xh.demo.UserDO泛性类@Datapublic class ResultSetDTO {private Integer totalSize;private In...

weixin_39595621的博客 841

针对于后台JSONObject和JSONArray的获取,遍历方法

上述例子种: 1.JSONObject obj = JSONObject.parseObject() //将Json字符串转换为Java对象。或者可以理解为:String类型的params转化为对应的JsonObejct对象。目的是:可以运用JsonObjecr的内置方法了。 2.JSONArrayarrayList=obj.getJSONArray("zzz") //获取obj对象...

qq_33220391的博客 2877

Java中JSONObject数据的处理

在日常的工作中,接口开发工作中经常会传递一些JSON类型的数据。总结自己工作中出现的问题,也是我开始记录的意义。(意识到自己是个菜鸟)

weixin_58217255的博客 1422

解决fastjson泛型转换报错

分享知识 传递快乐 错误信息 Exception in thread "main" java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.xh.demo.XsyUserDO 泛性类 @Data public class ResultSetDTO<T> { private Integer totalSize; private Integer count;

旷野历程 2159

Object转成JSONObject

public void onNext(Object o) { LogUtil.i("getFavorites", "json=" + o.toString()); // JSONObject json = JSON.parseObject("{\"code\":1001,\"timestamp\":\"2018-11-05 03:40:54\"}"); ...

c851204293的博客 10万+

谷歌JsonObject操作

Json对象是Name Value对(即子元素)的无序集合,相当于一个Map对象。JsonObject类是bantouyan-json库对Json对象的抽象,提供操纵Json对象的各种方法。本文就介绍如何操纵JsonObject类。 AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验 Json对象是Name Value对(即子元素)的无序

结贴人的博客 5877

Java的泛型有坑

Java的泛型有坑 public class Main { public static void main(String[] args) throws Exception { Main.test_no(); Main2.test_ok(); } static void test_no() { Result result_

u013813491的专栏 393

jsonobject返回map_操纵JsonObject的方法

Json对象是Name Value对(即子元素)的无序集合,相当于一个Map对象。JsonObject类是bantouyan-json库对Json对象的抽象,提供操纵Json对象的各种方法。本文就介绍如何操纵JsonObject类。一、创建JsonObject实例创建JsonObject实例有两类方法,一是利用超类Json的静态方法parseJsonText、parseJsonReader与par...

weixin_39722070的博客 397

[类型转换错误]java.lang.ClassCastException:XX.json.JSONArray cannot be cast to XX.JSONObject

这个类型转换错误比较基础,在此总结,主要梳理自己思路。大佬轻喷。 Bug问题如下: 解决思路:碰到这种类型转换错误,顾名思义,就是类型不对。可以打开debug模式,重点看日志中描述出问题的地方 ...

qq_43028248的博客 3539
上一篇: Springboot深度集成Redis
下一篇: Idea快捷键
iFence
博客等级 码龄9年 8051粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值