グソン

Google の Gson
開発者グーグル
初回リリース2008年5月22日 (2008年5月22日
安定版リリース
2.13.2 [ 1 ] ウィキデータで編集する / 2025年9月10日 (2025年9月10日
リポジトリ
書かれたジャワ
オペレーティング·システムクロスプラットフォーム
ライセンスApacheライセンス2.0
Webサイトgithub.com /google / gson

Gson、または Google Gson は、 Java オブジェクトをJSONにシリアル化する(およびそれを Java に逆シリアル化する) オープンソースのJavaライブラリです。

歴史

Gson ライブラリはもともと Google の社内用に開発され、バージョン 1.0 はApache License 2.0 の条件に基づいて 2008 年 5 月 22 日にリリースされました。

使用法

Gsonはリフレクションを利用するため、クラスをシリアライズまたはデシリアライズするために変更する必要はありません。デフォルトでは、クラスには定義されたデフォルト(引数なし)コンストラクタのみが必要ですが、この要件は回避できます(「機能」を参照)。

次の例は、サンプル オブジェクトをシリアル化する場合の Gson の基本的な使用方法を示しています。

パッケージ;パブリッククラスCar {パブリック文字列メーカー;パブリック文字列モデル;公共の二重定員;公開ブール事故;パブリックカー(){}public Car (文字列メーカー文字列モデルダブルキャパシティブール型事故) {これメーカー=メーカー;this .model = model ;これ容量=容量;これ事故=事故;}@オーバーライドパブリック文字列toString (){return ( "メーカー: " +メーカー+ ", " + "モデル: " +モデル+ ", " + "容量: " +容量+ ", " + "事故: " +事故);}}
パッケージ;パブリッククラスPerson {パブリック文字列名;パブリック文字列 姓;公共の[];公衆電話;パブリック時整数年齢;パブリックPerson () {}public Person ( String name , String surname , int phone , int age , Car [] cars ) {this .name =名前;this . surname = surname ;これ=;this .phone =電話;これ年齢=年齢;}@オーバーライドパブリック文字列toString (){StringBuilder sb =新しいStringBuilder ();sb . append ( "名前: " ). append (名前). append ( " " ). append (). append ( "\n" );sb . append ( "電話番号: " ). append (電話番号). append ( "\n" );sb . append ( "年齢: " ). append (年齢). append ( "\n" );整数i = 0 ;(:) {++ ;sb . append ( "Car " ). append ( i ). append ( ": " ). append ( car ). append ( "\n" );}sb.toString ()返します}}
パッケージmain ;example.Carをインポートしますexample.Personをインポートしますcom.google.gson.Gsonをインポートしますcom.google.gson.GsonBuilderをインポートしますパブリッククラスMain {パブリック静的void main 文字列[]引数{// デモ用にきれいな印刷を有効にする// `new Gson()` で直接インスタンスを作成することもできます。これによりコンパクトな JSON が生成されます。Gson gson =新しいGsonBuilder (). setPrettyPrinting (). create ();Car audi = new Car ( "Audi" "A4" 1.8 false );Car skoda = new Car ( "Škoda" , "Octavia" , 2.0 , true );[] cars = { audi , skoda };Person johnDoe = new Person ( "John" , "Doe" , 2025550191 , 35 , cars );システム.out.println ( gson.toJson ( johnDoe ) ) ;}}

上記のクラスのコードを呼び出すとMain、次の JSON 出力が生成されます。

JSON のデータを示す図。
{ "name" : "John" , "surname" : "Doe" , "cars" : [ { "manufacturer" : "Audi" , "model" : "A4" , "capacity" : 1.8 , "accident" : false }, { "manufacturer" : "Škoda" , "model" : "Octavia" , "capacity" : 2.0 , "accident" : true } ], "phone" : 2025550191 }

Person フィールドはtransientageとしてマークされているため、出力には含まれません。

パッケージmain ;example.Personをインポートします。com.google.gson.GsonインポートしますパブリッククラスMain { public static void main ( String [] args ) { Gson gson = new Gson (); String json = "{\"name\":\"John\",\"surname\":\"Doe\",\"cars\":[{\"manufacturer\":\"Audi\",\"model\":\"A4\"," + "\"capacity\":1.8,\"accident\":false},{\"manufacturer\":\"Škoda\",\"model\":\"Octavia\",\"capacity\"" + " : 2.0 , \"accident\":true}],\"phone\":2025550191 } " ; Person johnDoe = gson.fromJson ( json , Person.class ) ; System.out.println ( johnDoe.toString ( ) ) ; } }

最後の例で生成された出力を逆シリアル化するには、上記のコードを実行して次の出力を生成します。

名前: John Doe電話番号: 2025550191年齢: 0車1: メーカー: Audi、モデル: A4、定員: 1.8、事故: 偽車2: メーカー: Škoda、モデル: Octavia、定員: 2.0、事故: 真

これは、上記の例で Gson をJava プラットフォーム モジュール システムと共に使用する方法を示しています。

module GsonExample { com . google . gsonが必要です// 上記の例で宣言されたパッケージを開いて、Gson がパッケージ内のクラスでリフレクションを使用できるようにします (また、非公開フィールドにもアクセスします)。examplecom . google . gson開きます}

より広範な例については、 GitHub リポジトリの Gson の使用ガイドを参照してください。

特徴

  • Gson は、コレクションジェネリック型ネストされたクラス(デフォルトでは処理できない内部クラスを含む)を処理できます。
  • デシリアライズ時に、Gson はデシリアライズされるオブジェクトの型ツリーをナビゲートします。つまり、JSON 入力に存在する追加フ​​ィールドは無視されます。
  • ユーザーは以下を行うことができます。
    • カスタム シリアライザーおよび/またはデシリアライザーを作成して、プロセス全体を制御したり、ソース コードにアクセスできないクラスのインスタンスをデシリアライズしたりすることもできます。
    • InstanceCreator を記述します。これにより、定義された引数なしのコンストラクターなしでクラスのインスタンスを逆シリアル化できるようになります。
  • Gson は高度にカスタマイズ可能で、以下を指定できます。
  • コンパクト/きれいな印刷(コンパクトな出力か読みやすい出力か)
  • nullオブジェクトフィールドの処理方法 - デフォルトでは出力に存在しません
  • 除外フィールド - デシリアライズから除外するフィールドのルール
  • Javaフィールド名を変換する方法

参考文献

  1. ^ 「リリース 2.13.2」 2025年9月10日. 2025年9月15日閲覧
  • ジェンコフ、ジェイコブ。「GSON - ジーソン」チュートリアル.jenkov.com 2023 年 12 月 28 日に取得
  • Gson、Google、2023年12月28日、 2023年12月28日取得

さらに読む