当前位置: 首页 > 文档资料 > Gson 中文教程 >

版本控制支持(Versioning Support)

优质
小牛编辑
129浏览
2023-12-01

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

例子 (Example)

让我们看一下版本支持的实例。 在C:\“GSON_WORKSPACE中创建名为GsonTester的Java类文件。

File: 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; 
   } 
} 

验证结果 (Verify the result)

使用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}