Tool Kumarのツール
JSONをJavaのrecordに変換
APIのサンプルを、Jackson用のJavaのrecordに変換します。ルートは1つのpublicなrecordで、ネストしたrecordはその内側に置かれるため、出力をそのままRoot.javaとして保存できます。
このツールの使い方
- フィールドが異なるレコードも含めて、代表的なレスポンスを貼り付けます。
- 生成された出力を確認し、必要に応じてルート名を変更します。
- コードをコピーまたはダウンロードし、型がAPI仕様と合っているか確認します。
実行例
この出力は組み込みの変換機能で生成したものです。2つのitemのpriceからは浮動小数点数のフィールドが、nullと文字列のnoteからはnull許容のフィールドが推論されます。
入力
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}出力
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
public record Root(
@JsonProperty("user-id") long userId,
Profile profile,
List<Item> items
) {
public record Profile(String city, @JsonProperty("created_at") String createdAt) {}
public record Item(double price, String note) {}
}
Jacksonでrecordを使う
デフォルトの出力をRoot.javaとして保存します。JacksonはJSONのプロパティからrecordのコンポーネントを構築します。Itemのようなネストしたrecordは、Root.Itemとして利用できます。
出力にはpackage宣言が含まれていません。アプリケーションで使うパッケージを追加してください。日付をjava.timeの型に変更する場合は、普段使っているJacksonモジュールを登録してください。
import com.fasterxml.jackson.databind.ObjectMapper;
Root model = new ObjectMapper().readValue(responseBody, Root.class);オプションと注意点
- このターゲットが出力するのはrecordで、setterを持つミュータブルなPOJOではありません。Java 16以降と、recordに対応したJackson(2.12以降など)を使ってください。
- 名前を変えたrecordコンポーネントや予約語にあたるコンポーネントには、元のキーを指定した@JsonPropertyが付きます。ネストしたオブジェクトの配列はList<Item>になります。
- 整数はlong、符号付き64ビットを超える大きな整数はBigInteger、小数はdoubleになります。null許容のプリミティブには、Longなどのボックス型を使います。
- nullのみ、または型が混在するフィールドはObjectになります。日付はStringのままです。正確な10進数演算が必要な場合は、BigDecimalを使い、対応付けを見直してください。
標準でプライバシーを保護
ドキュメントはこのブラウザー内に残ります。Tool Kumarは、解析、変換、ダウンロードファイルの作成を端末内で行います。アカウント登録やアップロードの手順はありません。
JSONをJavaのrecordに変換のよくある質問
- JSONからJavaへの変換でPOJOは生成されますか?
- 生成されるのはイミュータブルなJavaのrecordです。Java 8のPOJO、setter、引数なしのコンストラクターが必要な場合は、出力を書き換えるか、そのモデル形式に対応したジェネレーターを使ってください。
- どのJSONライブラリが対象ですか?
- Jacksonです。Javaのコンポーネント名と異なるキーを保持する必要がある場合は、@JsonPropertyをインポートします。
- ネストした型をすべて1つのファイルに保存できますか?
- はい。publicなルートのrecordの中に、publicなネストしたrecordが含まれるため、オブジェクトから生成したデフォルトの出力はRoot.javaに収まります。
- recordにデシリアライズするにはどうすればよいですか?
- recordに対応したJacksonで、ObjectMapper.readValue(responseBody, Root.class)を使います。APIに合わせて、日付の扱いと数値の上限を確認してください。