如何使用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字符串
@Test void 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字符串(格式化)
@Test void 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) { } @Test void 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); }
到此这篇关于使用jakarta.json进行json序列化和反序列化的文章就介绍到这了,更多相关json序列化和反序列化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决mybatisplus MetaObjectHandler 失效的问题
本文主要介绍了解决mybatisplus MetaObjectHandler 失效的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-02-02SpringBoot使用Redis Stream实现轻量消息队列的示例代码
Redis Stream 是 Redis 5.0 引入的一种数据结构,用于处理日志类型的数据,它提供了高效、可靠的方式来处理和存储时间序列数据,如事件、消息等,本文介绍了SpringBoot使用Redis Stream实现轻量消息队列,需要的朋友可以参考下2024-08-08
最新评论