# Gson - 序列化`NULL`值

> 原文： [https://howtodoinjava.com/gson/serialize-null-values/](https://howtodoinjava.com/gson/serialize-null-values/)

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

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

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

要配置 Gson 实例以输出`null`，我们必须使用[`GsonBuilder`](https://howtodoinjava.com/gson/gson-gsonbuilder-configuration/)对象的`serializeNulls()`。

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

```

## 2.演示

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

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

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

```

#### 2.1 不要序列化空字段

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

```java
Employee employeeObj = new Employee(1, "Lokesh", "Gupta", null);

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

System.out.println(gson.toJson(employeeObj));

```

```java
{
  "id": 1,
  "firstName": "Lokesh",
  "lastName": "Gupta"
}

```

#### 2.2 序列化空字段

自定义 Gson 序列化，JSON 输出中包含空值。

```java
Employee employeeObj = new Employee(1, "Lokesh", "Gupta", null);

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

System.out.println(gson.toJson(employeeObj));

```

```java
{
  "id": 1,
  "firstName": "Lokesh",
  "lastName": "Gupta",
  "emailId": null
}

```

显然`null`字段已在 JSON 输出中序列化。 向我提供有关此 *Gson 序列化`NULL`值*文章的问题。

学习愉快！

参考：

[Gson 用户指南](https://github.com/google/gson/blob/master/UserGuide.md)