JSON 配列から List<T> フィールドを持つ Java POJO を生成する

JSON 配列を型付き List<T> フィールドに変換します。配列の中身から要素型を推論する仕組みと、混合型配列で List<Object> にフォールバックする挙動を解説します。

Structure

詳細な説明

JSON 配列を Java の List として扱う

JSON 配列は java.util.List<T> に直接マッピングされます。ジェネレーターは配列の中身を見て要素型 T を決定します。

プリミティブの同種配列

{
  "name": "playlist",
  "track_ids": [101, 102, 103]
}
public class Playlist {
    private String name;
    private List<Integer> trackIds;
    // アクセサ
}

オブジェクトの配列

{
  "id": 1,
  "items": [
    { "sku": "A1", "qty": 2 },
    { "sku": "B2", "qty": 1 }
  ]
}
public class Order {
    private Integer id;
    private List<Item> items;
}

public class Item {
    private String sku;
    private Integer qty;
}

クラス生成は配列の最初の要素を基にします。それ以降の要素も同じ形と仮定するため、もし違うのであれば手動でフィールドをマージする必要があります。

混合型の配列

{ "values": [1, "two", true] }
public class Root {
    private List<Object> values;
}

要素の型がバラバラなら List<Object> にフォールバックします。型安全にアクセスしたい場合は sealed interface やラッパークラスで手動的に絞り込みましょう。

空の配列

{ "tags": [] }
private List<Object> tags;

要素型が不明なため List<Object> を出力します。API 仕様を確認して正しい型に置き換えてください。

必要な import

ジェネレーターは自動的に以下を追加します。

import java.util.List;

なぜ配列ではなく List なのか?

Java の配列は固定長で、ジェネリクスとの相性も悪い(new T[] はコンパイルエラー)です。List<T> は Collections フレームワーク、Stream、各種 JSON ライブラリとシームレスに連携します。Jackson、Gson、Moshi はいずれもフィールド型が List であれば JSON 配列を List にデシリアライズします。

ユースケース

ページネーションレスポンス("results": [...], "total": 42)、集計レスポンス("items": [...])、イベントログのペイロードはすべて JSON 配列を使います。型付き List<T> にマッピングすればキャスト不要で IDE サポートと Stream 処理が活きます。

試してみる — JSON to Java

フルツールを開く