Gson 中实现的默认行为是空对象字段被忽略。 例如,如果在Employee对象中未指定电子邮件(即电子邮件为null),则电子邮件将不会成为序列化 JSON 输出的一部分。
Gson 会忽略null字段,因为此行为允许使用更紧凑的 JSON 输出格式。
要配置 Gson 实例以输出null,我们必须使用GsonBuilder对象的serializeNulls()。
Gson gson = new GsonBuilder()
.serializeNulls()
.create();让我们看看启用或禁用空字段序列化时 Gson 的行为。
这是员工类,具有四个字段。 我们将电子邮件字段设置为'null'。
public class Employee
{
private Integer id;
private String firstName;
private String lastName;
private String email;
}默认 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"
}自定义 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值文章的问题。
学习愉快!
参考: