Gson 序列化NULL值

Gson 序列化NULL值

前言

在Gson中实现的默认行为是忽略空对象字段。例如,如果在Employee对象中,我们不指定电子邮件(即电子邮件是null),那么电子邮件将不是序列化JSON输出的一部分。


Gson忽略空字段,因为此行为允许更紧凑的JSON输出格式。

1.如何在序列化期间允许空值

要配置GSON实例来输出
null,我们必须使用
serializeNulls()
GsonBuilder对象。

Gson gson = new GsonBuilder()
        .serializeNulls()
        .create();

2.演示

让我们看一下Gson的行为,同时启用或禁用空字段序列化。


这是员工类,有四个字段。我们将电子邮件字段设置为'null'

$title(Employee.java)
public class Employee
{
    private Integer id;
    private String firstName;
    private String lastName;
    private String email;
}

2.1。不要序列化空字段

JSON输出中没有空值的默认Gson序列化。

$title(Main.java)
Employee employeeObj = new Employee(1, "Lokesh", "Gupta", null);
                 
Gson gson = new GsonBuilder()
        .setPrettyPrinting()
        .create();
 
System.out.println(gson.toJson(employeeObj));

运行输出结果为:

{
  "id": 1,
  "firstName": "Lokesh",
  "lastName": "Gupta"
}

2.2。序列化空字段

自定义Gson序列化,JSON输出中包含空值。

$title(Main.java)
Employee employeeObj = new Employee(1, "Lokesh", "Gupta", null);
                 
Gson gson = new GsonBuilder()
        .setPrettyPrinting()
        .serializeNulls()
        .create();
 
System.out.println(gson.toJson(employeeObj));

执行输出结果:

{
  "id": 1,
  "firstName": "Lokesh",
  "lastName": "Gupta",
  "emailId": null
}

显然,
null字段在JSON输出中被序列化。

Gson 序列化NULL值

相关文章:

你感兴趣的文章:

标签云: