Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでGsonのバージョン管理機能を有効にする方法

Gsonライブラリは、読み書きするJavaオブジェクトに対してシンプルなバージョン管理システムを提供しています。このバージョン管理を実現するために、@Sinceアノテーションが用意されており、@Since(バージョン番号)のように記述して使用します。

Gsonインスタンスをバージョン管理対応で生成するには、GsonBuilder().setVersion()メソッドを使用します。例えばsetVersion(2.0)と指定した場合、@Sinceアノテーションに2.0以下のバージョンが設定されたフィールドのみがシリアライズ・デシリアライズの対象となります。

構文

public GsonBuilder setVersion(double ignoreVersionsAfter)

引数には、それ以降のバージョンのフィールドを無視する基準となるバージョン番号をdouble型で指定します。

コード例

import com.google.gson.*;
import com.google.gson.annotations.*;

public class VersionSupportTest {
    public static void main(String[] args) {
        Person person = new Person();
        person.firstName = "Raja";
        person.lastName = "Ramesh";

        // バージョン1.0としてGsonインスタンスを作成
        Gson gson1 = new GsonBuilder().setVersion(1.0).setPrettyPrinting().create();
        System.out.println("Version 1.0:");
        System.out.println(gson1.toJson(person));

        // バージョン2.0としてGsonインスタンスを作成
        Gson gson2 = new GsonBuilder().setVersion(2.0).setPrettyPrinting().create();
        System.out.println("Version 2.0:");
        System.out.println(gson2.toJson(person));
    }
}

// Personクラス
class Person {
    @Since(1.0)
    public String firstName;

    @Since(2.0)
    public String lastName;
}

実行結果

Version 1.0:
{
  "firstName": "Raja"
}
Version 2.0:
{
  "firstName": "Raja",
  "lastName": "Ramesh"
}

解説

上記の例では、PersonクラスのfirstNameフィールドには@Since(1.0)が、lastNameフィールドには@Since(2.0)が付与されています。

  • setVersion(1.0)の場合:1.0以降に追加されたフィールドのみが出力されるため、lastName(2.0で追加)はJSONに含まれません。
  • setVersion(2.0)の場合:2.0までのフィールドすべてが出力対象となるため、firstNamelastNameの両方がJSONに含まれます。

この仕組みを活用することで、APIのバージョンアップなどでモデルクラスに新しいフィールドを追加した場合でも、古いクライアント向けには以前の形式のJSONを出力しつつ、新しいクライアント向けには拡張されたJSONを提供するといった互換性管理が容易になります。なお、逆に特定バージョン以降でフィールドを除外したい場合は、@Untilアノテーションを使用します。

  1. SharePointのライブラリやリストでバージョン管理を有効にする方法

    SharePointのバージョン管理(バージョニング)機能を使えば、ライブラリ内のファイルに変更が加えられるたびに、その内容を保存・追跡し、必要に応じて以前の状態に復元できます。この機能により、サイトに投稿されるコンテンツをユーザー自身が細かくコントロールできるようになります。ここでは、SharePoint 2016において、ドキュメントライブラリとリストそれぞれに対してバージョン管理を有効化する手順をわかりやすく解説します。SharePointのライブラリ/リストでバージョン管理を有効にするSharePointのリストやライブラリのバージョン管理を利用すると、情報を時系列で追跡・管理でき、ア

  2. Minecraftでコントローラーを使う方法!Java版のコントローラーサポート有効化ガイド

    Minecraft(マインクラフト)は、サンドボックスジャンルのオープンワールドゲームとして、世界中のゲーマーから愛され続けている人気タイトルです。発売以来、約1億4,000万人のアクティブプレイヤーが楽しんでいます。Java版はオリジナルバージョンですが、コンソールやモバイルプラットフォームで遊べるBedrock版の方がゲーマーの間では人気があります。Java版はカスタムスキンやMODを自由に導入でき、ゲーム体験を豊かにできる反面、リソース消費が激しくPC限定という制約もあります。PC専用であるということは、Java版にはコントローラーがネイティブ対応していないことを意味します。しかし、コ