ページ内ナビ
概要
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等で明示的に変換できます。
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]
参考にした公式資料
- [1]Gson 2.14.0 README(2026-10-04)
- [2]Gson 2.14.0 release(2026-10-04)
- [3]Gson troubleshooting guide(2026-10-04)
- [4]Gson Apache 2.0 license(2026-10-04)
編集部からの補足
Gsonはmaintenance modeです。AndroidではreflectionとR8/ProGuardの相性からupstream自身が推奨していないため、新規Android用途ではcode generation型libraryも比較してください。
3ステップで試す
- 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
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
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
成長
成長の推移 · 直近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で投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Jackson9,818 Stars
共通タグ 2件 · 共通カテゴリ 1件
Java/JVMのJSON処理を中心に、ストリーミング・データバインド・各種形式モジュールと対応バージョンの選定入口をまとめる
- REST Assured7,139 Stars
共通タグ 2件 · 同じ言語
JavaのDSLでREST APIへrequestを送り、status・header・JSON/XML bodyを検証する
Java - ZEN Engine2,034 Stars
共通タグ 2件
業務判断を一つのJSONで定義し、複数の実行環境へ届ける
Rust - DBeaver51,949 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
多数のdatabaseを一つのdesktop SQL workspaceから操作する
Java - Netty35,065 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
event loopとChannel pipelineを組み合わせ、高接続数のprotocol server/clientをJavaで構築する
Java - OpenAPI Generator26,772 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
OpenAPI contractからclient SDK・server stub・documentationを多数のlanguage/frameworkへ生成するcode generator
Java
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。