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":"李四"}]

常见问题与注意事项

  1. 必须要有 getter 方法:Fastjson2 通过 getter 获取属性值,没有 getter 的字段不会出现在 JSON 中。
  2. 循环引用:如果对象间存在循环引用(如 A 引用 B,B 又引用 A),直接序列化会抛出异常。可以使用 JSONWriter.Feature.DisableCircularReferenceDetect 绕过,但建议先重构代码。
  3. 性能:Fastjson2 是市面上最快的 JSON 库之一,处理百万级对象毫无压力。

总结

 Fastjson2 toJSONString  可以把 Java 对象转成 JSON字符串,你只需一行代码:JSON.toJSONString(yourObject)

你可以通过JSONWriter.Feature.WriteNulls参数配置输出null值,可以通过 "yyyy-MM-dd HH:mm:ss"配置日期格式化。