Gson Null对象支持


默认情况下,Gson生成优化的Json内容,忽略NULL值。但是GsonBuilder使用 GsonBuilder.serializeNulls() 方法提供了在Json输出中显示NULL值的标志。

GsonBuilder builder = new GsonBuilder();
builder.serializeNulls();
Gson gson = builder.create();

没有serializeNulls调用的示例

在C:> GSON_WORKSPACE中创建名为 GsonTester 的Java类文件。

文件:GsonTester.java

import com.google.gson.Gson;  

public class GsonTester {
   public static void main(String args[]) {
      Gson gson = new Gson();  

      Student student = new Student();
      student.setRollNo(1);  
      String jsonString = gson.toJson(student);

      System.out.println(jsonString);  
      student = gson.fromJson(jsonString, Student.class);
      System.out.println(student);
   }      
}
class Student {
   private int rollNo;
   private String name;  

   public int getRollNo() {
      return rollNo;
   }  
   public void setRollNo(int rollNo) {
      this.rollNo = rollNo;
   }  
   public String getName() {
      return name;
   }  
   public void setName(String name) {
      this.name = name;
   }   
   public String toString() {
      return "Student[ name = "+name+", roll no: "+rollNo+ "]";
   }
}

验证结果

使用 javac 编译器编译类如下 -

C:\GSON_WORKSPACE>javac GsonTester.java

现在运行GsonTester查看结果 -

C:\GSON_WORKSPACE>java GsonTester

验证输出。

{"rollNo": 1}
Student[ name = null, roll no: 1]

serializeNulls调用的示例

在C:> GSON_WORKSPACE中创建名为GsonTester的Java类文件。

文件:GsonTester.java

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;  

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

      Student student = new Student();
      student.setRollNo(1);  
      String jsonString = gson.toJson(student);

      System.out.println(jsonString);  
      student = gson.fromJson(jsonString, Student.class);
      System.out.println(student);
   }      
}
class Student {
   private int rollNo;
   private String name;  

   public int getRollNo() {
      return rollNo;
   }  
   public void setRollNo(int rollNo) {
      this.rollNo = rollNo;
   }  
   public String getName() {
      return name;
   }  
   public void setName(String name) {
      this.name = name;
   }   
   public String toString() {
      return "Student[ name = "+name+", roll no: "+rollNo+ "]";
   }
}

验证结果

使用 javac 编译器编译类如下 -

C:\GSON_WORKSPACE>javac GsonTester.java

现在运行 GsonTester 查看结果 -

C:\GSON_WORKSPACE>java GsonTester

验证输出。

{
   "rollNo": 1,
   "name": null
}
Student[ name = null, roll no: 1]