默认情况下,Gson 对象不会将值为 NULL 的字段序列化到 JSON 对象中。如果要序列化值为 NULL 的字段,可以在创建 Gson 对象之前,先调用 GsonBuilder 实例的 serializeNulls() 方法,再由 GsonBuilder 创建 Gson 实例,即可在序列化后的 JSON 中包含 NULL 值的字段。

具体示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.johnson.gson.model.User;

public class NullFieldSerializeDemo {
public static void main(String[] args) {
GsonBuilder builder = new GsonBuilder();
builder.serializeNulls();
Gson gson = builder.setPrettyPrinting().create();

User user = new User(12, "username", null, null);
String json = gson.toJson(user);
System.out.println(json);
}
}

/*
此代码示例执行结果如下:
{
"id": 12,
"name": "username",
"tag": null,
"platform": null
}
*/

User 类定义如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class User implements Serializable {
private Integer id;
private String name;
private String tag;
private String platform;

public User() {
}

public User(Integer id, String name, String tag, String platform) {
this.id = id;
this.name = name;
this.tag = tag;
this.platform = platform;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getTag() {
return tag;
}

public void setTag(String tag) {
this.tag = tag;
}

public String getPlatform() {
return platform;
}

public void setPlatform(String platform) {
this.platform = platform;
}
}

P.S. 本文示例代码托管在 GitHub 上。

(END)