Gson - 序列化NULL
值
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
值文章的问题。
学习愉快!
参考: