左に Java を貼り付けて "Convert" を押してください — JSON に変換しますJava コードを貼り付け

このツールでできること

Java の record や昔ながらの POJO があって、それに合う JSON ペイロードが欲しい — リクエストボディ、OpenAPI の example、テストフィクスチャなど、用途は色々あります。クラスとコンストラクタ呼び出しを貼り付けるだけで(Java 10+ なら var order = new Order(...) でも OK)、JacksonGson がシリアライズしたのと同じ形の JSON が返ってきます。自分でインスタンス化する必要はありません。

このツールは単なる文字列置換ではなく、本物のシリアライザの挙動に従います。BigDecimalBigDecimal(...) ラッパーなしで JSON の数値になり、OffsetDateTimeLocalDateTimeInstantRFC 8259 に従って ISO-8601 文字列になります。UUID は標準の 8-4-4-4-12 の 16 進表記、boolean はそのまま boolean、コレクション(ListSet、配列)はすべて JSON 配列にフラット化されます。Map<String, V> は map のエントリをキーとする JSON オブジェクトになります。

Jackson のアノテーションもちゃんと効きます。@JsonProperty("x") はキーをリネームし、@JsonIgnore はフィールドを除外し、@JsonInclude(Include.NON_NULL) は null を除きます。ネストされたクラス — Order の中の Address みたいな典型パターン — はその場で展開されます。複数クラスが入ったファイルをそのまま貼り付けてください。トップレベルのインスタンスごとに JSON のエントリが作られます。アノテーションの全リファレンスは jackson-annotations のドキュメントを参照してください。

使い方

3 ステップだけ。一行の record でも、モデルファイル丸ごとでも同じです。

1

Java を貼り付ける(またはサンプルを試す)

クラスとコンストラクタ呼び出しを左のエディタに貼り付けます。getter/setter 付きの POJOrecordLombok の @Data クラス複数クラス、どれでも OK です。リアルな出発点が欲しければ Load Sample を押してください。

package 宣言や import、public/private の修飾子を消す必要はありません。標準 Java 構文のまま貼り付けてください。Jackson のアノテーション、バリデーションアノテーション、Lombok のデコレーション、どれも受け付けます。

2

Convert を押す

緑の Convert ボタンを押します。ツールがクラスを読み、コンストラクタ引数を解決し、Jackson のリネーム/無視アノテーションを適用して、インデント付きの JSON を生成します。

3

JSON をコピーする

右側のパネルには、Spring Boot のリクエストや JUnit のフィクスチャ、Swagger の example にそのまま使える JSON が表示されます。必要な場所にコピーしてください。

こんな場面で役に立ちます

Spring Boot のリクエストサンプル

<code>@RequestBody</code> の DTO とコンストラクタ呼び出しを貼り付ければ、アプリを起動しなくても Postman・curl・HTTPie に投げられる JSON ボディが得られます。

JUnit のテストフィクスチャ

ユニットテストで組み立てたオブジェクトを、統合テスト、WireMock のスタブ、Testcontainers のシードデータ用の独立した JSON ファイルに変換できます。

OpenAPI / Swagger の example

実際のモデルクラスから OpenAPI スペックの <code>example</code> ブロックを生成できるので、example が本物の POJO とずれなくなります。

Kafka やメッセージングのペイロード

Kafka メッセージを表す record を JSON に変換して、producer のテスト、サンプルデータ、ドキュメントに使えます。

よくある質問

Jackson のアノテーションは効きますか?

はい。@JsonProperty でフィールドをリネーム、@JsonIgnore で除外、@JsonInclude(Include.NON_NULL) で null の抑制、@JsonFormat で日付フォーマットの制御ができます。一覧は jackson-annotations のリファレンスを参照してください。

BigDecimal、LocalDateTime、UUID はどう扱われますか?

BigDecimal は JSON の数値になります。LocalDateTimeOffsetDateTimeInstant は ISO-8601 文字列、UUID は標準の 8-4-4-4-12 16 進文字列、LocalDateYYYY-MM-DD です。Jackson の JavaTimeModule のデフォルトと一致します。

record や sealed 型にも対応していますか?

はい。Java 14+ の record はカノニカルコンポーネントを使ってシリアライズされます。sealed 型とその許可されたサブタイプは、基になるデータの形にフラット化されます。背景は OpenJDK の records JEP を参照してください。

Lombok の @Data / @Builder クラスはどうなりますか?

Lombok のアノテーションは認識されます — 生成される getter、setter、builder は通常のアクセサとして扱います。宣言されたフィールドと貼り付けたコンストラクタ呼び出しを見て JSON を組み立てます。

複数クラスが入ったファイルをそのまま貼り付けられますか?

はい。貼り付けたコードにインスタンスがあるトップレベルのクラスは、それぞれ JSON の独立したエントリとして出力されます。内部クラスやネストされた static クラスは、使われている場所でインラインに展開されます。

コードは保存されますか?

変換のためにバックエンドに送られるだけで、保存もログ記録もしていません。ただし他のオンラインツールと同じで、本当に機密性の高いコードを貼り付ける前には一度見直してください。

関連ツール

Java から JSON はパズルの 1 ピース。一緒に使うと便利なツールをまとめました。