JSON→コード変換ツール

JSON サンプルを TypeScript インターフェース、Go 構造体、Rust serde 構造体、Zod スキーマ、JSON Schema に変換します。

ツールを読み込み中…

JSON→コード変換ツール代表的な JSON サンプルを貼り付けると、対象言語の型付きコードを即座に生成できます:TypeScript インターフェース、json タグ付きの Go 構造体、Rust serde 構造体、Zod スキーマ、draft-07 の JSON Schema。型はデータから直接推論されます。ネストしたオブジェクトは名前付きの型になり、配列は要素の型を推論し、すべての配列要素には現れないフィールドはオプショナルとして印が付きます。すべてブラウザ内で処理されるため、JSON がアップロードされることはありません。

JSON→コード変換ツールとは?

JSON→コードは、完全にブラウザ内で動作する無料の型ジェネレーターです。JSON サンプルを読み取り、選んだ言語で対応するデータモデルを書き出します。「変換先」メニューから対象を選び(TypeScript インターフェース、Go 構造体、Rust serde 構造体、Zod スキーマ、JSON Schema)、「ルート型名」でトップレベルの型に名前を付けます。推論エンジンは JSON をたどり、文字列・数値・真偽値・null をネイティブ型に対応付け、ネストしたオブジェクトをそれぞれ名前付きの型へ引き上げ、配列はその要素の型を採用し、一部の配列要素で欠けているキーはオプショナルになります。フロントエンドやバックエンドの開発者が、API レスポンスから DTO を作成したり、バリデーションスキーマを下書きしたり、定型コードを手書きせずにクライアントとサーバーの型をそろえたりするのに使います。

JSON→コード変換ツールの使い方

  1. 入力ボックスに代表的な JSON サンプルを貼り付けるか入力します。「サンプル」をクリックして例を読み込むこともできます。
  2. 「設定」を開き、「変換先」で対象を選びます:TypeScript、Go、Rust、Zod、JSON Schema。
  3. 「ルート型名」を設定して、トップレベルのインターフェース・構造体・スキーマの名前を指定します。
  4. 出力パネルで生成されたコードを確認します。JSON を編集したりオプションを変えたりすると自動で更新されます。
  5. 「型」の統計で推論された名前付き型の数を確認し、「コピー」をクリックして結果を取得します。

使用例

オブジェクトを TypeScript インターフェースに

入力

{ "id": 1, "name": "Ada", "active": true }

出力

export interface Root {
  id: number;
  name: string;
  active: boolean;
}

ネストしたオブジェクトを Go 構造体に

入力

{ "user": { "age": 30 } }

出力

type User struct {
	Age float64 `json:"age"`
}

type Root struct {
	User User `json:"user"`
}

キーの欠けた配列を Zod スキーマに

[{"a":1,"b":2},{"a":3}] のような配列を貼り付け、「変換先」を Zod に切り替えます。2 番目の要素に b がないため、ジェネレーターは推論された z.object 内で b を .optional() として印を付け、スキーマは両方の形を受け入れます。

よくある質問

私の JSON はどこかにアップロードされますか?
いいえ。解析とコード生成は、内蔵の推論エンジンを使ってすべてブラウザ内で行われます。JSON が端末から外に出ることはなく、オフラインでも動作します。
どの変換先に対応していますか?
TypeScript インターフェース、Go 構造体(json タグ付き、オプショナルなフィールドには omitempty)、Rust serde 構造体(Serialize/Deserialize の derive 付き、フィールド名が変わる場合は rename)、Zod スキーマ、draft-07 の JSON Schema です。本ツールはサンプルから忠実に推論できるものだけを生成します。
オプショナルなフィールドはどう決まりますか?
サンプルから決まります。配列がオブジェクトを含み、その一部であるキーが欠けている場合、そのキーはオプショナルと推論されます。それ以外は、サンプルに存在するすべてのキーが必須として扱われます。
数値・null・混在型はどうなりますか?
数値は各言語の浮動小数点型(number、float64、f64)に対応し、null は対象ごとに nullable または値型に対応します。サンプルごとに異なる型を持つフィールドは、推測せずに寛容な型(unknown、interface{}、serde_json::Value)にフォールバックします。
なぜ出力が空、またはエラーになるのですか?
入力は有効な JSON である必要があります。解析に失敗した場合、可能なら行と列を添えてエラーを表示します。指摘された箇所を直せば、コードは即座に再生成されます。

関連ツール