フラットな JSON を基本の Java POJO に変換する

private フィールドと getter / setter を備えた Plain Old Java Object を JSON から生成します。String、Integer、Long、Double、Boolean の型マッピングを学べます。

Foundations

詳細な説明

フラット JSON から Java POJO へ

最もシンプルな JSON-to-Java 変換は、ネストや配列を持たないフラットなオブジェクトを取り、各キーに対応する private フィールドとそのアクセサを 1 組ずつ持つクラスを生成することです。

JSON の例

{
  "id": 42,
  "name": "Alice",
  "email": "alice@example.com",
  "active": true,
  "score": 98.5
}

生成される Java POJO

package com.example.model;

public class User {
    private Integer id;
    private String name;
    private String email;
    private Boolean active;
    private Double score;

    public Integer getId() { return id; }
    public void setId(Integer id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    // 残りのフィールドも同様
}

型マッピング

JSON 値 Java 型
string String
整数 Integer(32 ビット範囲を超える場合は Long
小数 Double
真偽値 Boolean
null Object(それ以上推論できない)
配列 再帰的に推論された T を持つ List<T>

なぜラッパー型なのか?

JSON はあらゆるフィールドに null を許可するため、ジェネレーターは int / long / double / boolean のプリミティブではなく Integer / Long / Double / Boolean のラッパー型を出力します。ラッパー型なら null を保持できます。フィールドが必ず存在するとわかっているなら、生成後にプリミティブへ差し替えても問題ありません。

Jackson での利用

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);

このパターンが他のすべての例の基礎になります。基本の POJO さえできれば、Lombok を導入したり record に切り替えたり、Jackson 用にアノテーションを足したりするのは段階的な改善で済みます。

ユースケース

ID 単位のリソース取得、キーバリューストアからの設定行、フラットな構造の Webhook ペイロードなど、シンプルな REST API レスポンスの読み込みは、JSON を扱う Java サービスにおけるもっとも一般的なスタート地点です。

試してみる — JSON to Java

フルツールを開く