默认情况下,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); } }
|
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)