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 で検証と整形を行えます。
使い方
- 左側の JSON Input パネルに JSON を貼り付けまたは入力します。Java 出力は入力に応じて自動更新されます。
- Root class にトップレベル POJO のクラス名を、Package にファイル先頭で宣言するパッケージ名を入力します。
- プロジェクトに Lombok 依存があれば Lombok @Data を有効化します。getter / setter が省略され、アノテーションのみが付加されます。
- snake_case や kebab-case などの元キーを保持したい場合は Jackson @JsonProperty を有効化します。
- record (Java 16+) を有効化すると
public record定義が出力されます。record モードでは Lombok は自動的に無効化されます。 - Format で JSON 入力を整形、Sample でサンプルペイロードを読み込めます。
- Copy をクリックするか Ctrl+Shift+C を押すと、生成された 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 パネルを開いた状態で貼り付けてみても、新規リクエストが発生しないことを確認できます。
関連ツール
JSON → Kotlinデータクラス変換
JSONからシリアライゼーションアノテーション付きのKotlinデータクラスを生成します。
JSON to C# Generator
Convert JSON to C# classes (POCOs) with JsonProperty attributes, nullable types, and nested class support.
JSON → Go構造体変換
JSONからjsonタグと適切な命名規則でGoの構造体定義を即座に生成します。
JSON → TypeScript変換
JSONからネストされた型推論付きでTypeScriptインターフェースや型エイリアスを生成します。
JSONフォーマッター
JSONの整形、検証、ツリー表示をシンタックスハイライト付きで行えます。