JSON to Java POJO 変換ツール

JSONを貼り付けるとJava POJOクラスを生成します。Lombok @Data、Jackson アノテーション、Java 16+ record の出力に対応。

このツールについて

REST エンドポイントごと、設定ファイルごと、メッセージペイロードごとに Java の POJO クラスを手書きする作業は時間を奪い、コピペ起因のバグを生みがちです。このツールは任意の JSON を読み取り、各フィールドの型を推論し、ネストオブジェクトに対しては再帰的にクラスを生成して、プロジェクトのスタイルに合うコードを出力します。

出力スタイルは 3 種類から選べます。Plain POJO モードは伝統的な private フィールドと getX() / setX() アクセサを揃えた、Java 8 以降のあらゆるバージョンで動作するクラスを生成します。Lombok @Data モードはボイラープレートを取り除き、コンパイル時に Lombok のアノテーションプロセッサが equals、hashCode、toString、getter、setter を合成します。record モード(Java 16+)は DTO や値オブジェクトに最適な、不変な単行クラスを生成します。

型推論は Java の流儀に従います。JSON の文字列は String、整数は Integer(32 ビットを超える値は Long)、小数は Double、真偽値は Boolean、配列は要素型を再帰的に推論した List<T> になります。ネストオブジェクトは親キーを PascalCase に変換した名前で独立したクラスに切り出されます。user_id のような snake_case キーが Java の userId フィールドに変換される場合、Jackson のオプションを有効にすれば @JsonProperty("user_id") アノテーションが付与され、Jackson でのデシリアライズ時に元のキー名が保持されます。

すべての処理はブラウザ内で完結します。JSON はネイティブの JSON.parse() でパースされ、クラス生成はすべて JavaScript の文字列操作で実行されます。ペイロードがネットワーク境界を越えることは一切ありません。社内 API のレスポンス、顧客データ、Vault から取得したシークレットなど、サードパーティ製の変換ツールに貼り付けたくないデータでも安心して利用できます。

複数のスタックを扱うのであれば、同じ JSON を他言語にも変換できます。Android 向けには JSON to Kotlin 変換ツール、.NET 向けには JSON to C# ジェネレーター、バックエンド向けには JSON to Go 構造体ツール を試してください。貼り付け前に JSON を整形したい場合は JSON Formatter で検証と整形を行えます。

使い方

  1. 左側の JSON Input パネルに JSON を貼り付けまたは入力します。Java 出力は入力に応じて自動更新されます。
  2. Root class にトップレベル POJO のクラス名を、Package にファイル先頭で宣言するパッケージ名を入力します。
  3. プロジェクトに Lombok 依存があれば Lombok @Data を有効化します。getter / setter が省略され、アノテーションのみが付加されます。
  4. snake_case や kebab-case などの元キーを保持したい場合は Jackson @JsonProperty を有効化します。
  5. record (Java 16+) を有効化すると public record 定義が出力されます。record モードでは Lombok は自動的に無効化されます。
  6. Format で JSON 入力を整形、Sample でサンプルペイロードを読み込めます。
  7. Copy をクリックするか Ctrl+Shift+C を押すと、生成された Java コードをクリップボードにコピーします。

JSON to Java の人気サンプル

JSON to Java サンプルをすべて見る →

よくある質問

Java の POJO とは何ですか?

POJO は Plain Old Java Object の略で、フレームワークに縛られない普通の Java クラスを指します。継承する基底クラスや実装するインターフェース、必須のアノテーションは何もありません。API レスポンス、DB のレコード、設定値、メッセージボディなど、Java におけるデータモデリングの基本単位として使われます。

Lombok を使うべきか、getter / setter を手書きすべきか?

Lombok はアクセサの記述ノイズを取り除いてくれますが、Lombok 依存とアノテーションプロセッサ対応の IDE プラグインが必要です。新規プロジェクトやチームで既に Lombok を使っているのであれば @Data はほぼ常に正解です。Maven Central に公開するライブラリ、追加依存を厳しく禁じているコードベース、アノテーションプロセッサが使えない環境では明示的に getter / setter を生成してください。

record と class はどう使い分けますか?

不変なデータの単純な入れ物 — 典型的な DTO、レスポンスボディ、値オブジェクトなど — であれば record が最適です。簡潔で、equals / hashCode / toString が自動実装され、Java 21+ のパターンマッチングともよく噛み合います。可変性、setter での独自バリデーション、継承が必要な場合や、Java 16 未満をターゲットにする場合は class を使ってください。

ネスト JSON オブジェクトはどう扱われますか?

各ネストオブジェクトは独自の Java クラスとして抽出され、親キーを PascalCase 化した名前が付与されます。例えば "user" の中にある "address" は別個の Address クラスとして生成され、User クラスはそれを型付きフィールドとして参照します。深いネストでも仕組みは同じで、階層ごとに対応するクラスが生まれます。同名衝突が発生する場合は Address2、Address3 のように数値サフィックスが自動付与されます。

snake_case の JSON キーはどう Java のフィールド名に変換されますか?

snake_case(user_name)、kebab-case(user-name)など区切り文字付きのキーは、いずれも Java の慣用である camelCase(userName)に正規化されます。Jackson @JsonProperty を有効にすると、camelCase のフィールドにマッピングしつつ元のキー名を保持できるようアノテーションが追加され、Jackson が元の JSON をそのままデシリアライズできるようになります。

なぜ record を選ぶと Lombok が無効化されるのですか?

Java の record は不変アクセサ、equals、hashCode、toString を自動的に提供します。これに Lombok の @Data を重ねるとレコード側のコンパイラ生成メンバと衝突し、Lombok 自身もこの組み合わせを公式にサポートしていません。明確化のためトグルが自動で無効になります。Lombok を使いたい場合は record モードを先にオフにしてください。

データは安全ですか?

はい。JSON はブラウザ組み込みの JSON.parse() でパースされ、Java ソースコードは JavaScript の文字列操作で組み立てられます。ネットワークリクエスト、サードパーティ API の呼び出し、入力のログ記録は一切ありません。DevTools の Network パネルを開いた状態で貼り付けてみても、新規リクエストが発生しないことを確認できます。

関連ツール