使用jakarta.json进行json序列化和反序列化

引言

java里,json框架何其多,常见的有jackson、fastjson、gson等。各自的api互不相通,与代码耦合度高,切换代码非常高。如果使用json的api为统一的入口,各家再进行实现,代码与实现类不耦合,像slf4j一样,切换log框架(log4j/logback等)也不用改代码,代码只对api依赖,不对实现依赖,那就很好了。
jakarta.json项目就是为了解决这个问题的。自从javax改名jakarta,并全部给eclipse基金会运营,jakarta.json作为JAKARTA EE子项目之一也得到了支持。

引入依赖

        <dependency><groupId>jakarta.json.bind</groupId><artifactId>jakarta.json.bind-api</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.eclipse</groupId><artifactId>yasson</artifactId><version>3.0.3</version></dependency>

jakarta.json.bind-api是jsonb的接口包,里面只有对象定义、接口定义等,没有代码实现。yasson则对jsonb规范进行了完整实现。

将一个对象序列化为json字符串

    @Testvoid serialize() {User user = new User("John", 12, "This is a test", LocalDate.parse("2020-01-01"));String json = JsonbBuilder.create().toJson(user);System.out.println(json);}

将一个对象序列化为json字符串(格式化)

    @Testvoid prettySerialize() {User user = new User("John", 12, "This is a test", LocalDate.parse("2020-01-01"));String json = JsonbBuilder.create(new JsonbConfig().withFormatting(true)).toJson(user);System.out.println(json);}

将一个json字符串反序列化为一个对象

public record User(String name, int age, String remark, LocalDate birthDate) { }@Testvoid deserialize() {String json = """{"name": "John","age": 12,"remark": "This is a test","birthDate": "2020-01-01"}""";User user = JsonbBuilder.create().fromJson(json, User.class);System.out.println("user = " + user);}

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

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

相关文章

【Modelsim常见问题】Error: (vsim-3170) Could not find

这个错误发生的原因通常是测试的tb文件模块名和文件名不一致导致,参考如下:

易基因:番茄果实采后处理成熟诱导的DNA甲基化和转录组综合分析 | 作物研究

番茄果实成熟是一个复杂的生理过程,涉及关键基因的去甲基化,改变其转录水平,从而触发一系列生理事件。然而果实采摘后的处理方法,如冷藏、化学处理等,虽然能延长番茄的货架寿命,但通常可能会降低果实品质,目前尚不清楚这些过程是如何改变的。因此,研究采后处理诱导的番…

BPI-M4 Berry USB测试

连接USB鼠标或键盘测试 1、将USB接口的键盘和鼠标插入开发板的USB接口中 2、开发板连接HDMI显示器,并通电启动 3、如果鼠标或键盘能正常操作系统说明USB接口使用正常(鼠标只有在桌面版的系统中才能使用) 连接USB存储设备测试 1、首先将U盘或者USB移动硬盘插入开发板的USB接口…

mac M1 安装miniconda3

进入国内大学镜像库下载安装包https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda 下载包打开终端,开始安装 1、执行命令: bash Miniconda3-latest-MacOSX-arm64.sh 2、输入回车后,阅读文件,输入:q 退出文件 3、输入yes开始安装 4、输入回车选择安装路径- 默认路径…

BPI-M4 Berry 蓝牙调试

通过命令行连接蓝牙 1、首先,确定设备是否有蓝牙设备。输入hciconfig 如果镜像没有则使用下面命令进行安装sudo apt install bluez 2、可以看到有一个hci0的蓝牙设备,接下来就开始连接其他蓝牙设备sudo bluetoothctlpower on #打开蓝牙网卡 devices #列出蓝牙网卡已经配…

win10 php_imagick 扩展的安装

http://www.hzhcontrols.com/new-1729990.html本篇文章介绍的内容是关于win10_php_imagick 扩展的安装,现在分享给大家,有需要的朋友可以参考一下 PHP_imagick 这个扩展是我迄今为止遇到最难安装的扩展主要问题在于正确的文档太少, 今天终于是把这个扩展安装好了. 下面分享一…

BPI-M4 Berry以太网口和WiFi测试

以太网口测试 1、首先将网线的一端插入M4Berry的以太网接口,另一端接入路由器,并确保网络是畅通的。 2、系统启动后会通过DHCP自动给以太网卡分配IP地址。可以输入以下命令查看ip:ifconfig或者ip a 可以看到eth0获取到了10.1.1.207的ip地址 接下来,ping一下百度测试网络是否…

BPI-M4 Berry创建热点和设置静态IP

create_ap是一个帮助快速创建Linux上的WIFI热点的脚本,并且支持bridge和NAT模式,能够自动结合hostapd, dnsmasq和iptables完成WIFI热点的设置,避免了用户进行复杂的配置,github地址如下: https://github.com/oblique/create_ap 使用NET模式创建AP 1、首先使用 ls /sys/cla…

BPI-M4 Berry 远程连接开发板

使用SSH远程 1、需要使用到软件mobaxterm,请前往官网(https://mobaxterm.mobatek.net/download.html?spm=wolai.workspace.0.0.768c378fz9RNFi)进行下载 2、将开发板启动,并使用网线连接路由器,或者与你的电脑连接。 打开mobaxterm。点击左上角的"session"图标…

BPI-M4 Berry自动登陆及关闭桌面

3-1 BPI-M4 Berry自动登陆及关闭桌面此方法仅适用BPI-M4Berry的ubuntu和debian系统系统默认登录账号,密码当开发板启动完成,输入账号密码即可登录。由Banana Pi提供的镜像,默认账号/密码分别是root/bananapi和pi/bananapi。(输入密码时是不可见的,输入时注意别输入大写字母…

PART1-Oracle关系数据结构

2. Oracle关系数据结构 2.1. 表和表簇 2.1.1. 模式对象简介 数据库模式是数据结构的逻辑容器,这些数据结构称为模式对象。模式对象的例子有表和索引。模式对象是通过 SQL 创建和操作的。 一个数据库用户拥有密码和各种数据库权限。每个用户拥有一个与其同名的模式。模式包含了…

ros - slam - 电机控制之速度控制实验

前面说到通过控制对应的IO上的PWM占空比即可完成对电机速度的控制。关于PWM的介绍在ROS2硬件控制篇的舵机控制中已经介绍过了,所以我们知道通过改变PWM的占空比可以实现对输出电压的大小调节。占空比越大,输出电压越高;占空比越小,输出电压越低。接着我们通过一个实验来验证…

BPI-M4 Berry在windows系统下连接串口调试

串口线 我手头的串口线是这样的,包含如下四个针脚:VCC、GND、TX、RX。串口针脚说明: 其他的串口线可能不止四根线,而且杜邦线的颜色也不一定和我的一样。 请看清楚接口标注,按照下面介绍,将其接到板子上对应的接口板子串口GNDGNDTXDRXDRXDTXD VCC是电源,可以不用接。有的…

智慧旅游不再难,免费可视化工具一键搞定!

在过去,复杂的数据分析软件和昂贵的服务费用让许多中小旅游企业望而却步。而今,免费可视化工具彻底改变了这一局面,今天要说的工具就是山海鲸可视化。它不仅功能强大,而且免费使用,大大降低了数据可视化的门槛,即便是资源有限的旅游企业或是个人也能轻松上手。在这个数据…

平衡樹專題Treap

前言:题单在此:HL平衡树0701 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 平衡树 什么是平衡树? 首先我们需要知道二叉查找树的内容。 二叉查找树(BST:Binary Search Tree) 首先,他是一棵二叉树 其次,他的左子树的权值<根节点的权值<右子树的权值 最后,…

BUUCTF刷题:[DDCTF 2019]homebrew event loop

[DDCTF 2019]homebrew event loop 代码审计 from flask import Flask, session, request, Response import urllib import urllib.parseapp = Flask(__name__) app.secret_key = ********************* # censored url_prefix = /d5afe1f66147e857def FLAG():return *********…

PHP8.0正常,PHP7.2,PHP7.3报错Connection failed: SQLSTATE[HY000] [2054] The server re....

构建网站API接口的时候,使用了PDO进行数据库连接,原文如下 测试后发现,PHP8.0版本下,可以正常输出,但是PHP7.2和7.3则会报错:Connection failed: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client 经查验,发现因为所用的PHP7.…

H3C之防火墙拆堆叠升级

组网及说明两台防火墙F1070组成IRF,做冗余主备,并配置BFD MAD 进行分裂检测。业务在deviceA上跑,若deviceA上下行链路故障,则切换到deviceB。 现要求在业务中断最短的情况下,堆叠主备防火墙从域间策略的软件版本升级至安全策略的软件版本。现有版本为 Release R9345P14 升…

神经网络图像数据训练集成应用 | 可视化图像处理 | 可视化训练器

〇、写在前面 本应用基于开源UI框架PyDracula进行开发,除去最基本的UI框架外,所有功能的前后端实现都由我个人开发完成,但也有部分UI(如开关控件和进度条)是参考其他大佬的分享。 这个应用是我的本科毕业设计,但因为个人能力不足,姑且只能使用Python+PySide6开发。 开发…