OSS探訪GitHubでログイン

Java objectとJSONをannotation必須なしで相互変換するserialization library

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
24,233
主要言語
Java
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/01
ページ内ナビ

概要

GsonはJava objectをJSONへserializeし、JSONをJava objectへdeserializeするlibraryです。既存classやgeneric typeにも対応し、custom TypeAdapterでrepresentationを拡張できます。2.14.0ではjava.time adapterが追加され、JDK内部fieldへのreflection依存が減っています。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

toJson/fromJsonでJava objectとJSONを変換する

sourceを変更できない既存classも含めてserialize/deserializeでき、annotationを必須にせず利用できます。

出典:[1]

TypeTokenとcustom TypeAdapterでgeneric/custom representationを扱う

generic collectionはTypeTokenで型情報を渡し、特殊なformatやthird-party typeはTypeAdapter等で明示的に変換できます。

出典:[1][3]

2.14.0でjava.timeのbuilt-in adapterを利用する

InstantやDurationなどjava.time classを専用adapterで扱い、recent JDKでprivate field accessのための--add-opensを要求しない構成になりました。

出典:[2]

向いている用途

Java applicationで軽量なJSON mappingを使いたい場合に向く

simple object mapping、設定file、API payload等で、schema/code generationなしにJava objectとJSONを往復したい用途に適します。

出典:[1]

導入前の確認

maintenance modeでlarge new featureは期待しにくい

READMEはmaintenance modeを明記し、bug fixは継続する一方でlarge new featureは追加されにくいと説明しています。

出典:[1]

AndroidやKotlinではreflection特性とR8/言語機能の相性を確認する

READMEはAndroidでGsonを推奨しておらず、R8/ProGuard最適化とreflectionの組み合わせに注意を促しています。Kotlinのnon-null/default argument等もnativeには理解しないため、language-specific libraryを検討します。

出典:[1][3]

参考にした公式資料

  1. [1]Gson 2.14.0 README(2026-10-04)
  2. [2]Gson 2.14.0 release(2026-10-04)
  3. [3]Gson troubleshooting guide(2026-10-04)
  4. [4]Gson Apache 2.0 license(2026-10-04)
編集部からの補足

Gsonはmaintenance modeです。AndroidではreflectionとR8/ProGuardの相性からupstream自身が推奨していないため、新規Android用途ではcode generation型libraryも比較してください。

3ステップで試す

  1. 1

    Gson 2.14.0用の最小Maven projectを作る

    isolated Maven projectでGsonを2.14.0に固定します。Gson利用自体はJava 8+ですが、このsampleはJava 17でcompileします。

    mkdir -p gson-demo/src/main/java/demo && printf '%s\n' '<project xmlns="http://maven.apache.org/POM/4.0.0">' '<modelVersion>4.0.0</modelVersion>' '<groupId>demo</groupId><artifactId>gson-demo</artifactId><version>1.0.0</version>' '<properties><maven.compiler.release>17</maven.compiler.release></properties>' '<dependencies><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.14.0</version></dependency></dependencies>' '</project>' > gson-demo/pom.xml
  2. 2

    objectをJSONへ変換するsampleを作る

    annotationを付けないplain Java classをtoJsonする最小例です。

    printf '%s\n' 'package demo;' 'import com.google.gson.Gson;' 'public class Main {' ' static class User { String name = "Ada"; int id = 42; }' ' public static void main(String[] args) { System.out.println(new Gson().toJson(new User())); }' '}' > gson-demo/src/main/java/demo/Main.java
  3. 3

    compileしてJSON出力を確認する

    Maven Centralから2.14.0を取得してcompileし、Java objectがJSONへ変換されることを確認します。

    cd gson-demo && mvn -q compile dependency:build-classpath -Dmdep.outputFile=cp.txt && java -cp "target/classes:$(cat cp.txt)" demo.Main
公式READMEで確認

成長

成長の推移 · 直近30日

24,233 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
12
Open PR
109

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

タグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
24,233
Forks
4,489
Watchers
739
Open Issues
224
Contributors
175
所有者種別
Organization
主要言語
Java
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/01

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?