JSON巨匠:FastJSON的序列化解析

Fastjson 简介

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。
Fastjson 源码地址:https://github.com/alibaba/fastjson
Fastjson 中文 Wiki:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN

特性

  • 高性能:Fastjson通过高度优化的算法和数据结构,实现了在序列化和反序列化时的高性能。相较于其他JSON处理库,Fastjson通常能够提供更快的解析速度。
  • 灵活性:Fastjson提供了丰富的API和配置选项,支持灵活的定制和扩展。开发者可以根据实际需求选择不同的配置项,满足各种场景的使用要求。
  • 支持复杂对象:Fastjson可以序列化和反序列化复杂的Jva对象,包括嵌套对象、集合、泛型、枚举等。它能够处理各种复杂的数据结构。
  • 注解支持:Fastjson支持使用注解来定制序列化和反序列化过程。通过注解,开发者可以更精细地控制JSON的生成和解析。
  • 广泛的应用场景:Fastjson在阿里巴巴的众多项目中被广泛使用,也在社区和开源项目中得到了很多应用。它适用于各种Java应用,包括后端服务、移动端应用等。
  • 支持JSONPath:Fastjson支持JSONPath表达式,允许开发者通过类似XPath的语法来查询和操作JSON数据。

使用

引入依赖

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.21</version>
</dependency>

使用实例

创建实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private String name;private String password;
}

序列化和反序列化

public class FastJsonTest {public static void main(String[] args) {//创建对象User user = new User("奇遇少年", "666");//将对象转换为json字符串String toJSONString = JSON.toJSONString(user);System.out.println(toJSONString);//将json字符串转换为对象User json = JSON.parseObject(toJSONString, User.class);System.out.println(json);}
}

在这里插入图片描述

设置字段名和顺序

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {@JSONField(name = "username")@JSONField(ordinal = 2)private String name;@JSONField(name = "password")@JSONField(ordinal = 1)private String password;
}

在这里插入图片描述

设置不序列化/反序列化某个字段

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private String name;@JSONField(serialize = false, deserialize = false)private String password;
}

在这里插入图片描述
在需要序列化的对象中,可以使用transient关键字修饰不需要被序列化的字段。

private transient String name;

使用format配置日期格式化

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private String name;private String password;@JSONField(format="yyyy-MM-dd")private Date date;
}

在这里插入图片描述

问题

存在大量issue以及多次出现安全漏洞问题

在这里插入图片描述

结语

FastJSON作为一款高性能的JSON处理库,在Java开发中扮演着重要的角色。通过本篇博文,你应该对FastJSON的基本用法有了了解。在实际项目中,合理利用FastJSON的特性能够提高开发效率,同时确保系统性能的高效。希望本文对你更好地使用FastJSON提供了帮助。

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

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

相关文章

【零基础学习CAPL】——CAN报文的发送(按下按钮同时周期性发送)

🙋‍♂️【零基础学习CAPL】系列💁‍♂️点击跳转 文章目录 1.概述2.面板创建3.系统变量创建4.CAPL实现4.1.函数展示4.2.全量报文展示5.效果1.概述 本章主要介绍使用CAPL和Panel在按下按钮时发送周期性CAN报文。 本章主要在“【零基础学习CAPL】——CAN报文的发送(配合P…

面对近期行情大起大落的伦敦银需要关注什么?

近期经常有听到投资者抱怨说&#xff0c;伦敦银价格没有明显趋势&#xff0c;很难做。确实&#xff0c;我们从日线图看&#xff0c;金价处于一个比较宽幅的横盘区间当中&#xff0c;近期的行情也是大涨大跌。投资者认为&#xff0c;面对大起大落的行情无从下手。下面我们就来讨…

第十篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:深度解读鸿蒙全场景适配

传奇开心果短博文系列 系列短博文目录鸿蒙开发技术点案例示例系列 短博文目录前言一、鸿蒙全场景适配实现介绍二、统一核心示例代码三、设备驱动框架示例代码四、统一界面框架示例代码五、自适应布局示例代码六、分布式能力示例代码七、跨平台开发示例代码八、设备能力开放示例…

数学建模-多目标规划

例&#xff1a;求下列函数最大值 Matlab 程序&#xff1a; 若分开求解&#xff0c;即分别求出第一个函数和第二个函数的最大值&#xff0c;我们试一下。 第一个函数最大值&#xff08;我们先求最小值&#xff09; c[3 -2];A[2,3;2,1];b[18;10];Aeq[];beq[];vlb[0;0];vub[];[…

干货!收藏!一文讲清楚数据治理到底是什么?

数据治理的两个目标&#xff1a;一个是提质量&#xff0c;一个是控安全。通过业务流程优化&#xff0c;规范数据从产生、处理、使用到销毁的整个生命周期&#xff0c;使得数据在各阶段、各流程环节安全可控&#xff0c;合规使用。 数据治理治的是“数据”吗&#xff1f; 数据是…

外汇天眼:如何识别MT4交易软件的真伪?

在迈达克软件公司的MT4官网上&#xff0c;你找到许多交易商和银行&#xff0c;服务数百万位的交易者; 但即使抛去大量的白标&#xff0c;整个外汇市场可能有无数人正在使用的是盗版MT4&#xff0c;究竟盗版MT4的利弊在哪里&#xff1f; 该如何判别一个MT4软件是否是盗版&#x…

The Sandbox 专访|Y.GRAM工作室,带来元宇宙体验《Aeko 和朋友们: 数字迷宫》

Q1. 您能简单介绍一下自己吗&#xff1f; 大家好&#xff0c;我是 Y.GRAM 创建者工作室的负责人 Gon。我是《Aeko和朋友们》的创作者&#xff1a;数字迷宫》的制作人。很高兴见到您。 Q2. 具体来说&#xff0c;什么是 《Aeko和朋友们&#xff1a;数字迷宫》&#xff1f; 《Ae…

【PyRestTest】高级使用

本节主要涉及PyRestTest的高级特征的详细使用,主要指:generators(生成器), variable binding(变量绑定), data extraction(数据提取), content validators(文本验证) 它们是如何组合在一起的? 模板和上下文 测试和基准测试可以使用变量来模板化动态配置。使用基础的…

C++ 入门(三)— 函数

文章目录 函数简介函数返回值Void 函数&#xff08;非值返回函数&#xff09;函数参数和参数局部范围函数的声明和定义具有多个代码文件的程序 函数简介 C 程序的方式工作。当程序遇到函数调用时&#xff0c;它将在一个函数内按顺序执行语句。函数调用是告诉 CPU 中断当前函数…

python爬虫实战——获取酷我音乐数据

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 开发环境: 版 本&#xff1a; python 3.8 编辑器&#xff1a;pycharm 2022.3.2 模块使用: requests >>> pip install requests 如何安装python第三方模块: win R 输入 cmd 点击确定, 输入安装命令 pip install…

【CSDN】如何设置被关注自动回复功能

文章目录 选择管理博文 选择粉丝服务 先选择自动回复&#xff0c;再打开自动回复开关&#xff0c;编辑内容后保存&#xff0c;等待审核通过即可。

Android平台如何实现RTSP转GB28181

为什么要做GB28181设备接入侧&#xff1f; 实际上&#xff0c;在做Android平台GB28181设备接入模块的时候&#xff0c;我们已经有了非常好的技术积累&#xff0c;比如RTMP推送、轻量级RTSP服务、一对一互动模块、业内几乎最好的RTMP|RTSP低延迟播放器。 Android平台GB28181接…