Tool Kumarのツール

JSONをJavaのrecordに変換

APIのサンプルを、Jackson用のJavaのrecordに変換します。ルートは1つのpublicなrecordで、ネストしたrecordはその内側に置かれるため、出力をそのままRoot.javaとして保存できます。

このツールの使い方

  1. フィールドが異なるレコードも含めて、代表的なレスポンスを貼り付けます。
  2. 生成された出力を確認し、必要に応じてルート名を変更します。
  3. コードをコピーまたはダウンロードし、型が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に合わせて、日付の扱いと数値の上限を確認してください。

関連ツール

JSONをKotlinのデータクラスに変換、JSONをC#のクラスに変換、JSON Schema生成。