本文へスキップ

JSONからJavaクラスへの変換器

JSON から Java クラスを生成します。ページ内で json_typegen(WebAssembly)を Kotlin モードで実行し、各 data class を private フィールド、全引数コンストラクター、getter と setter を持つ Java クラスに書き換えます。

Jackson で REST レスポンスをデシリアライズするための POJO を作る。

JSON

Java

こんなときに使えます

  • Jackson で REST レスポンスをデシリアライズするための POJO を作る。
  • サンプルのペイロードから、Spring コントローラー用の DTO クラスの下書きを作る。

使い方

  1. 左側のエディターに JSON オブジェクトまたは配列を貼り付けます。
  2. 生成されたクラスを確認します。ルートは Root で、ネストしたオブジェクトはキー名に基づく別クラスになります。
  3. それぞれ別の .java ファイルにコピーし(List と Jackson の import は含まれます)、必要に応じて型を調整します。

JSON

{
  "id": 42,
  "user_name": "ada",
  "active": true,
  "tags": ["admin", "editor"]
}

Java クラス

import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Root {
	private Long id;
	@JsonProperty("user_name")
	private String userName;
	private Boolean active;
	private List<String> tags;

	public Root(Long id, String userName, Boolean active, List<String> tags) {
		this.id = id;
		this.userName = userName;
		this.active = active;
		this.tags = tags;
	}

	public Long getId() {
		return this.id;
	}

…

仕様と制限

生成はブラウザ内の WebAssembly で行います。設定はありません。

snake_case のキーは Jackson の @JsonProperty 付きの camelCase フィールドになります。Jackson と java.util.List は使われる場合に import されます。

数値は Long または Double、真偽値は Boolean になります。boolean の getter は is ではなく get を使います。

null の値は Object、null だけの配列は List<?> になります。実際のデータがわかったら具体的な型に置き換えてください。

FAQ

ルートが配列の JSON も変換できますか?

できます。ルートは List<Root2> フィールドを持つラッパークラス Root になり、配列の要素はクラス Root2 になります。

省略可能なフィールドは扱えますか?

一部の配列要素にないキーは検出しますが、Java の出力では省略可能の印が外れるため、すべてのフィールドが null を許容する通常のラッパー型になります。

Lombok のアノテーションや record を生成しますか?

しません。明示的なコンストラクター、getter、setter を持つ通常のクラスを出力します。

null の値はどの型になりますか?

サンプルで null のフィールドは、具体的な型を推定できないため Object(private Object note;)になります。String、Long、ネストしたクラスにするには、実際の値を含むサンプルを入力してください。

仕様を確認する