JSON Javaクラス変換
JSONをJavaのrecord、getter・setter付きのPOJO、Lombokの@Dataクラスに変換します。入れ子のクラス、List<>型、Jacksonの@JsonProperty名に対応しています。
型の推論にはJavaScriptの数値を使うため、整数のサンプルは±9,007,199,254,740,991の範囲内にしてください。それより大きな識別子や正確な小数値は文字列にしてください。
recordにはJava 16以降が必要です。Jackson 2.12以降なら、追加の設定なしで読み込めます。
Jackson 2.xのアノテーションは com.fasterxml.jackson.core:jackson-annotations に含まれています。POJOとLombokのモデルはJSONのバインドにフィールドを使うため、getterの名前が原因でキーが重複することはありません。
使い方: User obj = new ObjectMapper().readValue(json, User.class);
JSONのサンプルを貼り付けると、Jacksonがそのまま読み込めるJavaクラスを生成します。コンパクトなrecord(Java 16以降)、getterとsetterを持つ従来型のPOJO、LombokのDataクラスから選べます。入れ子のオブジェクトは、貼り付けるだけで使える1つのファイル内の入れ子のstaticクラスになり、配列はList<…>になり、Javaの名前として使えないキーはcamelCaseに変換されて、元のキーを保持する@JsonPropertyアノテーションが付きます。
使い方
- JSONのオブジェクトを貼り付けます。複数のサンプルを統合したい場合は、オブジェクトのリストを貼り付けます。
- ルートクラスの名前を設定し、必要ならパッケージも入力します。
- record、POJO、Lombokのいずれかを選びます。
- キーがsnake_caseやダッシュなど、Javaの名前ではない形式なら、Jacksonのアノテーションをオンのままにします。
計算式
string → String · 整数 → int(−2,147,483,648…2,147,483,647の範囲外はlong)· 小数 → double · true/false → boolean · オブジェクト → 入れ子のクラス · 配列 → List<項目の型> · nullまたは欠落 → Integer, Double, Boolean · 混在 → Object
プリミティブ型はnullを保持できないため、どれかのサンプルでnullまたは存在しないキーはラッパー型になります。フィールド名はcamelCaseです。user_name は userName になり、Javaのキーワードには接尾辞が付くため、class は classValue になります。@JsonPropertyは、Javaの名前がキーと異なる場合、または2文字目が大文字でJacksonのgetter命名規則によりキーが変わってしまう場合に追加されます。数値の推論にはJavaScriptの数値を使うため、整数のサンプルは±9,007,199,254,740,991の範囲内にしてください。それより大きな識別子や正確な小数は文字列にしてください。Jacksonをオンにすると、POJO/Lombokのモデルはgetterの別名によるキーの重複を防ぐため、フィールドに直接バインドします。空のJSONキーは、先に名前を変更する必要があります。
計算例
既定のサンプルからは3つのクラスと16個のフィールドが生成されます。User と、入れ子の Address、Order です。"id": 1024 は int id、"balance": 1520.75 は double balance、"tags" は List<String> tags になります。2件の注文はどちらも total を持ち、59.9 は小数なので double total です。order_id は orderId に変更されて @JsonProperty("order_id") が付き、"lastLogin": null はnullだけでは型がわからないため Object lastLogin になります。
よくある質問
record、POJO、Lombokのどれを使うべきですか?
recordにはJava 16以降とJackson 2.12以降が必要です。POJOは明示的なgetterとsetterを使います。Lombokの@Dataはコンパイル時にアクセサを生成し、依存関係とアノテーションプロセッサが必要です。生成されるJacksonのアノテーションは、Jackson 2.xのパッケージを使います。
intの箇所とIntegerの箇所があるのはなぜですか?
プリミティブのintはnullになれません。どれかのサンプルでキーがnullまたは存在しない場合は、値がないときに黙って0になるのではなくnullのままになるよう、Integerを使います。
isActiveのgetterがisIsActive()になるのはなぜですか?
POJOモードでは、プリミティブのbooleanのgetterは is にフィールド名全体を続けるため、isIsActive() になります。Lombokは isActive を active プロパティに短縮することがあります。Jacksonのアノテーションをオンにしておくと、生成されたエイリアスがJSONのキーを保持します。
Gsonでも使えますか?
はい、名前が一致する場合は使えます。Gsonはフィールドを直接読み取り、独自の@SerializedNameアノテーションを使うため、Jacksonのアノテーションをオフにして、名前を変更したフィールドに@SerializedNameを追加してください。
出典
最終更新:
この入力内容のページアドレス: https://kakao.mobile/ja/tools/json-to-java-class-tool/
このツールを引用する
kakaoCalc. (2026, November 8). JSON Javaクラス変換. https://kakao.mobile/ja/tools/json-to-java-class-tool/
“JSON Javaクラス変換.” kakaoCalc, 8 Nov. 2026, kakao.mobile/ja/tools/json-to-java-class-tool/.