| Google の Gson | |
|---|---|
| 開発者 | グーグル |
| 初回リリース | 2008年5月22日 (2008年5月22日) |
| 安定版リリース | |
| リポジトリ | |
| 書かれた | ジャワ |
| オペレーティング·システム | クロスプラットフォーム |
| ライセンス | Apacheライセンス2.0 |
| Webサイト | github.com /google |
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 出力が生成されます。

{ "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 がパッケージ内のクラスでリフレクションを使用できるようにします (また、非公開フィールドにもアクセスします)。exampleをcom . google . gsonに開きます。}より広範な例については、 GitHub リポジトリの Gson の使用ガイドを参照してください。
特徴
- Gson は、コレクション、ジェネリック型、ネストされたクラス(デフォルトでは処理できない内部クラスを含む)を処理できます。
- デシリアライズ時に、Gson はデシリアライズされるオブジェクトの型ツリーをナビゲートします。つまり、JSON 入力に存在する追加フィールドは無視されます。
- ユーザーは以下を行うことができます。
- カスタム シリアライザーおよび/またはデシリアライザーを作成して、プロセス全体を制御したり、ソース コードにアクセスできないクラスのインスタンスをデシリアライズしたりすることもできます。
- InstanceCreator を記述します。これにより、定義された引数なしのコンストラクターなしでクラスのインスタンスを逆シリアル化できるようになります。
- Gson は高度にカスタマイズ可能で、以下を指定できます。
- コンパクト/きれいな印刷(コンパクトな出力か読みやすい出力か)
- nullオブジェクトフィールドの処理方法 - デフォルトでは出力に存在しません
- 除外フィールド - デシリアライズから除外するフィールドのルール
- Javaフィールド名を変換する方法
参考文献
- ^ 「リリース 2.13.2」 2025年9月10日. 2025年9月15日閲覧。
- ジェンコフ、ジェイコブ。「GSON - ジーソン」。チュートリアル.jenkov.com 。2023 年 12 月 28 日に取得。
- Gson、Google、2023年12月28日、 2023年12月28日取得