Gson - 支援空物件



預設情況下,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] 
廣告
© . All rights reserved.