当前位置: 首页 > 教程 > Gson >

Gson版本支持

精华
小牛编辑
119浏览
2023-03-14

Gson提供了@Since注解来控制基于其各种版本的类的Json序列化/反序列化。 考虑以下具有版本支持的类。 在这个类中,我们最初定义了两个变量rollNoname,稍后将其添加为一个新变量。 使用@Since定义了rollNo,名称从版本1.0开始并经过验证,版本为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();

让我们来看一个实际版本支持的例子。 创建一个名为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; 
   } 
}

执行上面示例代码,得到以下结果 -

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