鍍金池/ 教程/ Java/ Gson版本支持
Gson開發(fā)環(huán)境設(shè)置
Gson數(shù)據(jù)綁定
Gson序列化內(nèi)部類
Gson數(shù)據(jù)流
Gson簡介
Gson對象數(shù)據(jù)綁定
Gson從序列化中排除字段
Gson版本支持
Gson入門程序
Gson類
Gson自定義類型適配器
Gson對象序列化
Gson空對象支持
Gson教程
Gson樹模型
Gson序列化示例

Gson版本支持

Gson提供了@Since注解來控制基于其各種版本的類的Json序列化/反序列化。 考慮以下具有版本支持的類。 在這個類中,我們最初定義了兩個變量rollNoname,稍后將其添加為一個新變量。 使用@Since定義了rollNo,名稱從版本1.0開始并經(jīng)過驗證,版本為1.1。

class Student { 
   @Since(1.0) 
   private int rollNo; 

   @Since(1.0) 
   private String name; 

   @Since(1.1) 
   private boolean verified;  
}

GsonBuilder提供了setVersion()方法來序列化這樣的版本化類。

GsonBuilder builder = new GsonBuilder(); 
builder.setVersion(1.0);   
Gson gson = builder.create();

讓我們來看一個實際版本支持的例子。 創(chuàng)建一個名為GsonTester的Java類文件:GsonTester.java -

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

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

      Student student = new Student(); 
      student.setRollNo(1); 
      student.setName("Maxsu"); 
      student.setVerified(true);  

      String jsonString = gson.toJson(student); 
      System.out.println(jsonString);  

      gson = new Gson();     
      jsonString = gson.toJson(student); 
      System.out.println(jsonString); 
   }      
} 
class Student { 
   @Since(1.0) 
   private int rollNo; 

   @Since(1.0) 
   private String name; 

   @Since(1.1) 
   private boolean verified;   

   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 void setVerified(boolean verified) { 
      this.verified = verified; 
   }  
   public boolean isVerified() { 
      return verified; 
   } 
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

{"rollNo":1,"name":"Maxsu"} 
{"rollNo":1,"name":"Maxsu","verified":true}