前言
在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输出中被序列化。
原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/243649.html