Fastjson 简明教程:让你轻松掌握 Java 中的 JSON 序列化和反序列化
什么是 Fastjson?
Fastjson 是一个 Java 序列化和反序列化库,它可以将 Java 对象与 JSON 数据进行互转换。它是阿里巴巴开源的项目之一,目前已经成为了 Java 开发中最受欢迎的 JSON 库之一。
为什么要使用 Fastjson?
JSON 是一种轻量级的数据交换格式,它被广泛应用于前后端的数据传输、API 接口的设计和数据存储等场景。在 Java 开发中,我们经常需要将 Java 对象转换为 JSON 数据或将 JSON 数据转换为 Java 对象,这时候就需要使用 JSON 库。
虽然 Java 中有很多 JSON 库可供选择,但是 Fastjson 具有以下优点:
- 速度快:Fastjson 的序列化和反序列化速度非常快,是目前 Java 中最快的 JSON 库之一。
- 功能强大:Fastjson 支持复杂的 Java 对象和 JSON 数据类型转换,支持多种序列化和反序列化方式。
- 易于使用:Fastjson 的 API 简单易用,可以轻松地实现 Java 对象和 JSON 数据的转换。
如何使用 Fastjson?
1. 添加 Fastjson 依赖
在使用 Fastjson 之前,我们需要在项目中添加 Fastjson 的依赖。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
2. Java 对象转 JSON 字符串
使用 Fastjson 将 Java 对象转换为 JSON 字符串非常简单,只需要调用 toJSONString 方法即可。
// 定义一个 Java 对象
public class User {
private String name;
private int age;
// 省略构造器和 getter/setter 方法
}
// 将 Java 对象转换为 JSON 字符串
User user = new User("Tom", 18);
String jsonStr = JSON.toJSONString(user);
System.out.println(jsonStr); // {"age":18,"name":"Tom"}
3. JSON 字符串转 Java 对象
使用 Fastjson 将 JSON 字符串转换为 Java 对象也非常简单,只需要调用 parseObject 方法即可。
// 将 JSON 字符串转换为 Java 对象
String jsonStr = "{\"age\":18,\"name\":\"Tom\"}";
User user = JSON.parseObject(jsonStr, User.class);
System.out.println(user.getName()); // Tom
System.out.println(user.getAge()); // 18
4. 自定义序列化和反序列化方式
Fastjson 支持多种序列化和反序列化方式,如果默认的方式不符合我们的需求,我们可以自定义序列化和反序列化方式。
例如,我们可以将 Java 中的 LocalDateTime 类型转换为 ISO-8601 格式的字符串,以便在 JSON 数据中传输。
// 定义一个 LocalDateTime 序列化器
public class LocalDateTimeSerializer implements ObjectSerializer {
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
if (object == null) {
serializer.writeNull();
} else {
LocalDateTime dateTime = (LocalDateTime) object;
serializer.write(dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
}
}
}
// 定义一个 LocalDateTime 反序列化器
public class LocalDateTimeDeserializer implements ObjectDeserializer {
public LocalDateTime deserialze(DefaultJSONParser parser, Type type, Object fieldName) throws JSONException {
String datetimeStr = parser.getLexer().stringVal();
return LocalDateTime.parse(datetimeStr, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
}
public int getFastMatchToken() {
return JSONToken.LITERAL_STRING;
}
}
// 注册自定义序列化器和反序列化器
SerializeConfig.getGlobalInstance().put(LocalDateTime.class, new LocalDateTimeSerializer());
ParserConfig.getGlobalInstance().putDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer());
// 将 Java 对象转换为 JSON 字符串
User user = new User("Tom", 18);
user.setCreateTime(LocalDateTime.now());
String jsonStr = JSON.toJSONString(user);
System.out.println(jsonStr); // {"age":18,"createTime":"2022-01-01T00:00:00","name":"Tom"}
// 将 JSON 字符串转换为 Java 对象
String jsonStr = "{\"age\":18,\"createTime\":\"2022-01-01T00:00:00\",\"name\":\"Tom\"}";
User user = JSON.parseObject(jsonStr, User.class);
System.out.println(user.getCreateTime()); // 2022-01-01T00:00
总结
本文介绍了 Fastjson 的基本用法,包括添加 Fastjson 依赖、Java 对象转 JSON 字符串、JSON 字符串转 Java 对象和自定义序列化和反序列化方式。希望通过本文的介绍,读者能够掌握 Fastjson 的常用操作,更加方便地进行 Java 对象和 JSON 数据的转换。
本文来源:词雅网
本文地址:https://www.ciyawang.com/s06ch2.html
本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。
相关推荐
-
如何使用Map函数?
数,并将其应用于数组中的每个元素。以下是一些示例: 将字符串转换为数字 有时我们需要将字符串类型的数据转换为数字类型。使用Map函数,我们可以很容易地将一个包含字符串的数组转换为一个包含数字的数组。
-
数据恢复:如何找回丢失的数据
性结构来进行。硬盘的磁性结构是由许多微小的磁区组成的,每个磁区代表一个位。当我们存储数据时,电脑会将数据转换成位,然后写入硬盘的磁区中。当我们需要访问这些数据时,电脑会读取硬盘上相应的磁区。数据恢复软
-
如何进行数据加密和敏感信息保护
和敏感信息保护,以确保数据不会被黑客和其他不法分子窃取或滥用。 什么是数据加密? 数据加密是一种将数据转换为不可读形式的过程,以保证数据的保密性和安全性。加密后的数据只能被授权的用户解密。在实际应用
-
如何进行数据加密和数据传输安全
文章中,我将介绍如何进行数据加密和数据传输安全。 什么是数据加密? 在计算机科学中,数据加密是指将数据转换为密文,以便只有授权人员能够读取它。数据加密可以通过使用密码算法进行,这些算法使用密钥来转换
-
网络数据安全:保护你的信息免于风险
坏或丢失时,能够恢复数据。定期备份数据是保护数据的一个重要方面。 4.使用加密技术 加密技术可以将数据转换为一种难以理解的形式,以保护数据的完整性和保密性。例如,使用VPN可以保护互联网连接,使用加
-
如何使用群晖NAS进行数据库管理?
据库之后,你需要将数据导入到数据库中。你可以使用命令行或者图形界面导入数据。在导入数据之前,你需要将数据转换成支持的格式。 mysql -u myuser -p mydb < data.sql
-
如何使用群晖NAS进行数据加密?
的一部分。但是,随着网络犯罪的增加,保护您的数据已变得越来越重要。数据加密是一种保护数据的方法,它将数据转换为一种不可读的形式,以确保只有授权用户可以访问和阅读它。 如何使用群晖NAS进行数据加密?
-
PHP中实现加密和解密功能的方法
术。在本文中,我们将介绍如何在PHP中实现加密和解密功能。 什么是加密和解密? 加密是将可读的数据转换为难以理解的数据。加密后的数据是不可读的,只有掌握加密算法的人才能将其转换回可读的数据。解密
-
PHP中的加密和解密:常用算法和实现方法?
以及在PHP中如何使用这些算法来保护数据的安全性。 什么是加密和解密算法? 加密和解密算法是一种将数据转换为另一种形式的技术,使其不易被未经授权的人读取。这种技术可以用于保护电子邮件、信用卡信息、社
-
PHP中如何处理CSV文件和Excel文件?
逐行读取文件,并将每一行转换为数组。 如果要将数据写入CSV文件,可以使用fputcsv()函数将数据转换为CSV格式并写入文件。 $data = array('John', 'Doe', 'jo