leftso 238 0 2019-08-17 17:30:22

文章位置:左搜> 编程技术> Java编程技术> 正文

前言

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

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输出中被序列化。

评论区域

暂无评论,快来抢首发吧!!!