Gson - 序列化NULL值

Gson - 序列化NULL

原文: https://howtodoinjava.com/gson/serialize-null-values/

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

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

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

要配置 Gson 实例以输出null,我们必须使用GsonBuilder对象的serializeNulls()

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

2.演示

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

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

public class Employee 
{
    private Integer id;
    private String firstName;
    private String lastName;
    private String email;
}

2.1 不要序列化空字段

默认 Gson 序列化,JSON 输出中不包含空值。

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 输出中包含空值。

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文章的问题。

学习愉快!

参考:

Gson 用户指南