GSON是Google提供的一種用于Java對象序列化的開源庫,它可以用來將Java實體對象轉(zhuǎn)換成符合JSON規(guī)范格式的字符串。但是在使用GSON轉(zhuǎn)換Java對象時,如果對象中存在值為null的屬性,轉(zhuǎn)換后的JSON數(shù)據(jù)中該屬性會被忽略,即不會被轉(zhuǎn)換為JSON字符串中的鍵值對。
//定義一個Java實體類 public class Person{ private String name; private Integer age; private String address; //省略getter和setter方法 } Person person = new Person(); person.setName("小明"); person.setAge(null); person.setAddress("北京市"); Gson gson = new Gson(); String json = gson.toJson(person); System.out.println(json);
上述代碼中,我們創(chuàng)建了一個Person對象,并將其中的age屬性設(shè)置為null,然后使用GSON將該對象轉(zhuǎn)換為JSON字符串。運行后,打印出來的JSON字符串如下:
{"name":"小明","address":"北京市"}
我們可以看到,轉(zhuǎn)換后的JSON字符串中,age這個屬性被忽略了。
如果我們需要在JSON字符串中保留屬性為null的字段,可以在轉(zhuǎn)換時設(shè)置GSON的Null值處理策略。GSON提供了三種Null值處理策略:
- DEFAULT:默認(rèn)模式,會將null值忽略掉,不會被轉(zhuǎn)換為JSON字符串中的鍵值對。
Gson gson = new GsonBuilder() .setNullSerializationPolicy(NullSerializationPolicy.DEFAULT) .create();
- INCLUDE:將null值包含在序列化結(jié)果中,會將null值轉(zhuǎn)換為JSON字符串中的null值。
Gson gson = new GsonBuilder() .setNullSerializationPolicy(NullSerializationPolicy.INCLUDE) .create();
- SKIP:跳過null值不予處理,即便屬性值是null也不再JSON字符串中生成該屬性的鍵值對。
Gson gson = new GsonBuilder() .setNullSerializationPolicy(NullSerializationPolicy.SKIP) .create();
通過設(shè)置Null值處理策略,我們就能夠在GSON轉(zhuǎn)換JSON字符串時保留null值字段了。