ヘルプ

JSON to POJO 変換:JSONからJavaクラスやrecordを作成

JSONを貼り付けると、そのまま使えるJavaコードが得られます。オブジェクトごとにクラスを作り、privateフィールド、引数なしコンストラクタ、getterとsetterを備えています。お好みでJavaのrecordにもできます。入れ子のオブジェクトは親クラスの中に書かれるので、結果全体を1つの.javaファイルに収められます。元のJSONキーが必要なときは、JacksonかGsonのアノテーションを追加してください。変換はブラウザ内で行われ、JSONがアップロードされることはありません。


JSON to POJO online:使い方

  1. JSON 欄にJSONを貼り付けてください(欄には「ここにJSONを貼り付け...」と表示されています)。貼り付けた内容はすぐに変換されます。入力した場合は、手を止めてから約300ミリ秒後にコードが更新されます。
  2. Javaコード の下にあるクラスを確認してください。その下の「2個のクラスを生成しました。」のような行で、いくつ書き出されたかが分かります。
  3. コードのすぐ下にある コピー を押してください。ボタンの表示が一瞬「コピー完了」に変わります。コードはルートクラスと同じ名前のファイル(例:Root.java)に保存してください。
  4. 結果を変えるには 設定 を開きます。ルートクラス名(初期値は Root)を入力し、アノテーション で なし・Jackson・Gson から選ぶか、クラスの代わりにレコードを使う にチェックを入れてください。設定を変えるとすぐにコードが更新されます。
  5. 消去 を押すと、入力欄が空になり、最初からやり直せます。

JSON to POJO converter の例:JSONを入れるとJavaクラスが出る

貼り付けるJSONの例です:{ "user_id": 7, "name": "Ana", "price": 4.5, "tags": ["a", "b"], "address": { "city": "Kyoto" } }

アノテーション を「なし」にすると、結果は import java.util.List; と public class Root から始まります。フィールドは Integer userId、String name、Double price、List<String> tags、Address address です。続いて引数なしコンストラクタと、getUserId・setUserId のようなgetterとsetterが並びます。

入れ子の address オブジェクトは、Root の中の public static class である Address になります。そのため、ファイルは1つで足ります。キー user_id はフィールド userId になりました。ステータス行には「1個のフィールド名をJavaに合わせて変更しました。」と表示されます。

JSON Java record と Jackson アノテーション

ルートクラス名 を Order にし、アノテーション で Jackson を選び、クラスの代わりにレコードを使う にチェックを入れます。同じJSONが public record Order(...) になります。

recordの各コンポーネントには、元のJSONキーを持つ @JsonProperty("key") が付くので、user_id は引き続き userId に対応します。Gson を選ぶと、同じコンポーネントに @SerializedName("key") が付き、Gsonのimportも加わります。recordにはJava 16以降が必要です。

JSONの型とJavaの型の対応

型はすべてボクシング型なので、どのフィールドも欠けていたりnullだったりして構いません。

数値は書かれたとおりに読み取られるため、桁の長いIDが丸められることはありません。importはコードが使うときだけ追加されます。同じオブジェクトに同じキーが2回あるときは、最後のものが使われます。

クラス名とフィールド名の付け方

ルートクラス名は有効なJava名に整えられ、欄が空のときは Root になります。JSON自体がオブジェクトの配列で始まる場合、Root は1つの要素を表し、画面には「JSONは List<Root> として読み込んでください」という趣旨の案内が出ます。

JSONが受け付けられないとき

読み取りはJSONの規則どおり厳密です。コメント、シングルクォート、末尾のカンマはエラーになります。「このJSONを読み取れませんでした」の欄に、理由と「3行目、5列目」のような位置が表示されます。たとえば「「}」の位置で解析が止まりました。直前に、カンマ、コロン、括弧、引用符の抜けがないか確認してください。」と出ます。

42や数値だけの配列のように、正しいJSONでもオブジェクトがない場合は、「このJSONには、クラスにできるオブジェクトがありません。」と表示されます。200万文字を超えるテキストと、200階層より深い入れ子は受け付けられません。


よくある質問

JavaでJSONをPOJOに変換するには、どうすればよいですか?

JSONを「JSON」欄に貼り付け、「Javaコード」のコードをコピーしてください。JSONのオブジェクトごとに1つのクラスが作られ、privateフィールド、publicの引数なしコンストラクタ、publicのgetXとsetXメソッドが付きます。コードはルートクラスと同じ名前のファイル(例:Root.java)に保存し、JacksonまたはGsonでJSONを読み込んでください。

JSONの配列をJavaのオブジェクトに変換するには?

オブジェクトの配列をそのまま貼り付けてください。配列の1要素がルートクラスとして書かれ、JSONはListとして読み込むよう案内されます。JacksonならTypeReference>、GsonならTypeToken>を使います。オブジェクトの中にある配列は、キー名を付けたクラスのListフィールドになります。

JacksonやGsonで元のJSONキーを残すには?

「設定」を開き、「アノテーション」でJacksonまたはGsonを選んでください。Jacksonは各フィールドに@JsonProperty("key")、Gsonは@SerializedName("key")を付け、importも加えます。「なし」では、user_idのようなキーがフィールドuserIdになり、アノテーションや命名戦略で元のキーを保たない限り、JSONには対応しません。

JSONからJavaのrecordを作れますか?

はい。「設定」で「クラスの代わりにレコードを使う」にチェックを入れてください。JSONの各オブジェクトはpublic record Name(Type a, Type b) {}になり、入れ子のオブジェクトは親recordの中のrecordになります。recordにはJava 16以降が必要です。アノテーションも使え、各コンポーネントに付きます。

JSONの数値が、場所によってIntegerになったりDoubleになったりするのはなぜですか?

型は数値の書き方で決まります。整数はInteger、Integerに収まらなければLong、Longにも収まらなければBigIntegerです。小数点や指数を付けて書いた数は、1.0であってもDoubleになります。

配列の中のオブジェクトでキーが異なる場合はどうなりますか?

どれか1つにでも現れたキーをすべて持つ、1つのクラスにまとめられます。一部のオブジェクトにしかないキーにもフィールドができます。キーに複数の型が混ざる場合や配列が空の場合は、フィールドの型がObjectまたはListになります。そうしたフィールドは手で確認してください。

Kotlinのクラスや、Lombokのアノテーションは生成されますか?

いいえ。出力は、getterとsetterを持つクラスか、recordの素のJavaです。Lombokを使う場合は、getterとsetterのメソッドを削除し、クラスに@Dataを付けてください。Kotlinのdata classは別に書く必要があります。

JSONはどのくらいの大きさまで扱えますか? アップロードされますか?

200万文字まで、入れ子は200階層までです。変換はお使いのブラウザ内で行われるため、JSONがアップロードされたり保存されたりすることはありません。

おすすめ

無料でツールを続ける支えになります。✨

画像はイメージです。 Amazonのアソシエイトとして、Capsule Toolsは適格販売により収入を得ています。