在Gson中處理空值有多種方式,以下是其中兩種常見的方法:
nullValue
屬性設(shè)置默認(rèn)值:Gson提供了一個nullValue
屬性,可以用來設(shè)置在解析JSON時,如果遇到空值應(yīng)該返回的默認(rèn)值。例如,以下代碼將默認(rèn)值為空字符串:
Gson gson = new GsonBuilder()
.nullValue("")
.create();
MyClass obj = gson.fromJson("{\"name\":\"John\", \"age\":null}", MyClass.class);
System.out.println(obj.getName()); // 輸出 "John"
System.out.println(obj.getAge()); // 輸出 ""
在上面的代碼中,如果JSON中的age
字段為空值,那么在解析后,obj
對象的getAge()
方法將返回空字符串。
excludeFieldsWithoutExposeAnnotation
屬性排除未注解的字段:Gson還提供了一個excludeFieldsWithoutExposeAnnotation
屬性,可以用來排除那些沒有使用@Expose
注解的字段。如果一個字段沒有使用@Expose
注解,并且它的值為空值,那么它將不會被包含在解析后的對象中。例如,以下代碼將排除所有沒有使用@Expose
注解的字段:
Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create();
MyClass obj = gson.fromJson("{\"name\":\"John\", \"age\":null}", MyClass.class);
System.out.println(obj.getName()); // 輸出 "John"
System.out.println(obj.getAge()); // 輸出 null,因為age字段沒有使用@Expose注解
在上面的代碼中,如果一個字段沒有使用@Expose
注解,并且它的值為空值,那么它將不會被包含在解析后的對象中。