Gson版本支持


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

让我们看一下版本支持的实例。在C:> GSON_WORKSPACE中创建名为 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("Mahesh Kumar");
      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;
   }
}

验证结果

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

C:\GSON_WORKSPACE>javac GsonTester.java

现在运行GsonTester查看结果 -

C:\GSON_WORKSPACE>java GsonTester

验证输出。

{"rollNo":1,"name":"Mahesh Kumar"}
{"rollNo":1,"name":"Mahesh Kumar","verified":true}