Gson-version-support

提供:Dev Guides
移動先:案内検索

Gson-バージョン管理のサポート

Gsonは @ Since アノテーションを提供して、さまざまなバージョンに基づいてクラスのJsonシリアル化/逆シリアル化を制御します。 バージョニングをサポートする次のクラスを検討してください。 このクラスでは、最初に2つの変数 rollNo および name を定義し、その後、新しい変数として verified を追加しました。 @Sinceを使用して、バージョン1.0の時点で rollNo および name を定義し、バージョン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}