ネストされた JSON オブジェクトを連結された Java POJO に変換する
ネストされた各 JSON オブジェクトに独立した Java クラスを生成します。各階層が固有の POJO になり、親クラスは型付きフィールドで子を参照します。
Structure
詳細な説明
Java でネスト JSON をモデリングする
実運用の JSON にはほぼ必ずネストオブジェクトが含まれます。ジェネレーターは各ネストオブジェクトを独自のクラスに切り出し、親キーを PascalCase 化した名前を付け、囲んでいるクラスから型付きフィールドで参照させます。
JSON の例
{
"id": 1,
"name": "Acme Corp",
"address": {
"street": "123 Main St",
"city": "Springfield",
"zip": "62704"
}
}
生成される Java POJO
package com.example.model;
public class Company {
private Integer id;
private String name;
private Address address;
// getter / setter は省略
}
public class Address {
private String street;
private String city;
private String zip;
// getter / setter は省略
}
ネストクラスの命名規則
クラス名は JSON キーを PascalCase 規則で変換したものになります。
address→Addressshipping_address→ShippingAddressbilling-info→BillingInfocontactDetails→ContactDetails
同じ名前に解決される 2 つのネストオブジェクトがある場合、Address、Address2、Address3 のように数値サフィックスが自動付与されます。
ネストの深さ
階層数の上限はありません。3〜4 階層(Order → LineItem → Product → Pricing)であれば 4 つのクラスが生成され、それぞれが型付き参照で繋がります。
Jackson でのデシリアライズ
ObjectMapper mapper = new ObjectMapper();
Company company = mapper.readValue(json, Company.class);
String city = company.getAddress().getCity();
Jackson は型グラフを自動的に辿るため、ネスト POJO のための追加設定は不要です。
再利用のヒント
同じ論理的型(例えば Address)が元 JSON 内の複数の親に登場する場合、ジェネレーターは現状それぞれ独立したクラスとして出力します。生成後に手動で 1 つの共有クラスに統合すれば重複を避けられます。
ユースケース
本番の REST API は顧客ブロックと明細リストを持つ注文、住所と連絡先を持つ会社情報など、複合リソースを返すのが普通です。ネスト JSON を連結された Java POJO にマッピングすることは、本格的な統合の出発点になります。