差分のあるサンプルを集める
ルートはオブジェクト、またはオブジェクトのみの空でない配列にします。配列は要素モデルを推論するためのもので、架空のラッパープロパティは作りません。
型生成
配列を入力した場合、出力は要素のクラスです。配列全体はList<Root>として読み込みます。
解析と生成はブラウザー内で行い、入力は送信・保存しません。
配列入力の出力は要素モデルです。List<Root>として読み込みます。
2クラス・2可空フィールド
APIのレスポンスしか手元にないとき、JSONからJavaでモデルの下書きを作れます。複数の実例を配列にすると、2件目以降で現れるプロパティやnullも判断材料になります。
JSONをPOJOに変換しても、その型がAPIの仕様を証明するわけではありません。必須項目や許される値は、実際の契約と照合してください。
JSONからJavaは同じ配列位置にある全オブジェクトのフィールドを統合します。あるレコードで欠けている項目も残し、欠落やnullの証拠を可空型に反映します。
Javaクラス生成では記号入りのキーをそのまま名前にできません。安全な識別子に直し、Jacksonアノテーションで元の綴りと結び付けます。名前の衝突には連番を付けます。
ルートはオブジェクト、またはオブジェクトのみの空でない配列にします。配列は要素モデルを推論するためのもので、架空のラッパープロパティは作りません。
観測モードでは欠落またはnullのある項目を可空にします。全項目モードはJavaのプリミティブをボックス化し、Kotlinに?とnullの既定値を付けます。入れ子をオフにすると補助クラスが同一ファイルのトップレベルに並びます。
自動生成は350ms待ちます。オフなら生成ボタンかCtrl/Cmd+Enterを使用します。編集するとコピーと保存は無効になり、クリアやサンプル読込は1回取り消せます。
符号付き64ビットに収まる通常の整数はlong/Long、それより大きい整数はBigIntegerです。1.0や1e3も含め、小数と指数表記はBigDecimalになり、JavaScriptの浮動小数点を経由しません。
同じ画面でKotlinのdata classを選べます。欠落やnullを観測した項目はT? = null、非nullの項目には既定値を付けません。空のルートオブジェクトは引数のない通常のclassになります。
ASCIIのキャメルケースを生成し、予約語と重複名を調整します。Javaのフィールド、Kotlinの引数とgetterにそれぞれJsonPropertyを付けます。型は完全修飾名なので、ルート名がStringでも衝突しません。
Javaはpublicフィールドとstaticの入れ子クラス、Kotlinは入れ子のデータクラスが既定です。入れ子を解除したJavaの補助クラスはpublicにならず、そのまま1ファイルに収まります。
JSONからJavaは元の数値トークンを使い、long/Long、BigInteger、BigDecimalを選びます。Object/Anyに入る数値については、上のデコーダー設定も確認してください。
空のルート配列はモデルの根拠がないため拒否します。オブジェクト内部の空配列はList<Object>やList<Any?>になり、同じ位置の別サンプルに値があればその型を使います。
このページはJackson用のフィールドクラスとKotlinモデルに絞っています。Lombokやrecordを出力するスイッチはありません。必要なら保存後にプロジェクトの方針に合わせて変更してください。
ここではJavaとKotlinを切り替えられます。入力を共有したまま出力が更新され、ファイル拡張子も変わります。ほかの言語は関連ツールから選んでください。
注釈をオンにすると全フィールドに元のキーを記録します。Kotlinでは引数とgetterの両方が対象です。オフの場合、名前を変えないと表現できないキーがあると生成を止めます。
見直したい推論例がありますか?