在Gson中处理空值有多种方式,以下是其中两种常见的方法:
nullValue
属性设置默认值:Gson提供了一个nullValue
属性,可以用来设置在解析JSON时,如果遇到空值应该返回的默认值。例如,以下代码将默认值为空字符串:
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
注解,并且它的值为空值,那么它将不会被包含在解析后的对象中。