Fastjson2 序列化 toJSONString
Fastjson2 中序列化toJSONString是最基础也是最常用的功能,序列化也就是将 Java 对象转换成 JSON 字符串。在 Fastjson2 中,这个操作主要通过JSON.toJSONString(yourObject)方法完成。
通过 toJSONString 变成 JSON 字符串,方便网络传输、存储或与其他系统交互,比如Web API、前后端分离、微服务调用、缓存存储、日志记录等场景。
第一步:引入依赖
在 Maven 项目中,添加以下依赖:
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.61</version>
</dependency>
基础用法:Java 对象转 JSON
我们先创建一个简单的用户类:
public class User {
private String name;
private int age;
private String email;
// 提供 getter/setter 方法,或者使用lombok注解
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
}
现在,让我们序列化一个 User 对象:
import com.alibaba.fastjson2.JSON;
public class ToJSONStringExample {
public static void main(String[] args) {
User user = new User();
user.setName("张三");
user.setAge(25);
user.setEmail("[email protected]");
// 序列化为 JSON 字符串
String jsonString = JSON.toJSONString(user);
System.out.println(jsonString);
}
}
运行结果:
{"age":25,"email":"[email protected]","name":"张三"}
以上示例是一个简单的将java对象转json字符串,高级用法看下面的例子。
高级用法:控制序列化输出
Fastjson2 提供了丰富的配置选项,让你可以精确控制 JSON 的输出格式。
1. 格式化输出
当需要调试或阅读时,可以让 JSON 更易读 当然你可以使用使用json格式化工具在线美化与校验:
// 使用 SerializeFeature.PrettyFormat 开启格式化
String prettyJson = JSON.toJSONString(user, JSONWriter.Feature.PrettyFormat);
System.out.println(prettyJson);
输出效果:
{
"age":25,
"email":"[email protected]",
"name":"张三"
}
2. 只输出非空字段
在 Fastjson2 中,默认行为就是不输出值为 null 的字段。这与 Fastjson 1.x 有所不同,1.x 有时需要通过各种配置来控制,而 2.x 的设计更加简洁。
如果你想让null显示出来可以使用JSONWriter.Feature.WriteNulls进行配置:
user.setEmail(null); // 将 email 设为 null
String compactJson = JSON.toJSONString(user, JSONWriter.Feature.WriteNulls);
System.out.println(compactJson);
// 输出: {"age":25,"name":"张三","email":null}(email 显示为null)
3. 日期格式化
如果对象包含日期字段,可以指定输出格式:
User user = new User();
user.setName("李四");
user.setBirthday(new Date());
String json = JSON.toJSONString(user,
"yyyy-MM-dd HH:mm:ss");
System.out.println(json);
// 输出: {"birthday":"2026-05-06 15:34:47","name":"李四"}
序列化集合与数组
toJSONString 同样支持集合和数组:
List<User> users = new ArrayList<>();
users.add(new User("张三", 25));
users.add(new User("李四", 30));
String listJson = JSON.toJSONString(users);
System.out.println(listJson);
// 输出: [{"age":25,"name":"张三"},{"age":30,"name":"李四"}]
常见问题与注意事项
- 必须要有 getter 方法:Fastjson2 通过 getter 获取属性值,没有 getter 的字段不会出现在 JSON 中。
- 循环引用:如果对象间存在循环引用(如 A 引用 B,B 又引用 A),直接序列化会抛出异常。可以使用
JSONWriter.Feature.DisableCircularReferenceDetect绕过,但建议先重构代码。 - 性能:Fastjson2 是市面上最快的 JSON 库之一,处理百万级对象毫无压力。
总结
Fastjson2 toJSONString 可以把 Java 对象转成 JSON字符串,你只需一行代码:JSON.toJSONString(yourObject)。
你可以通过JSONWriter.Feature.WriteNulls参数配置输出null值,可以通过 "yyyy-MM-dd HH:mm:ss"配置日期格式化。

