JSON から TypeScript へ変換 — Zod、Go、Python、Java、C#、Rust にも対応

JSON のサンプルを貼り付けると、TypeScript のインターフェース、Zod スキーマ、JSON Schema、または Go、Python、Java、C#、Kotlin、Swift、Rust の型を生成します。

型ジェネレーターを読み込み中(約 1 MB、初回のみ)…

型はサンプルのみから推論します。サンプルで null のフィールドは null または any になります。より厳密な型にするには、もっと情報の多いサンプル(または複数のレコードの配列)を貼り付けてください。

すべてブラウザ内で動作します。JSON がアップロードされることはないので、実際の API レスポンスにも安心して使えます。 すべての無料ツールを見る.

不具合や改善できそうな点を見つけましたか?いただいたメッセージはすべて読み、すぐに対応します。

この無料の JSON → TypeScript 変換ツールは、API のレスポンスや設定ファイルなどの JSON サンプルを読み取り、入れ子のオブジェクトごとに名前付きの型を 1 つずつ持つ、対応する TypeScript のインターフェースを書き出します。同じ入力から、Zod スキーマ、JSON Schema、Go の構造体、Python の dataclass や Pydantic モデル、Java、C#、Kotlin、Swift、Rust のクラスも生成できるので、フィールド名を手で打ち込む必要はもうありません。

型推論には、quicktype.io やエディター拡張機能「Paste JSON as Code」のもとになっているオープンソースのエンジン quicktype を、ブラウザ内で使っています。配列内のすべてのオブジェクトをマージするので、一部のレコードにしか現れないフィールドはオプションになります。推論できるのは見えたものだけです。サンプルで null のフィールドは null 型に、空の配列は任意の型の配列になります。最も正確な型を得るには、実際の値が入ったサンプルか、複数のレコードを貼り付けてください。

使い方

  1. JSON オブジェクトか、オブジェクトの配列を貼り付けます。最初はサンプルのユーザーレコードが読み込まれています。
  2. 出力を選びます:TypeScript のインターフェース、型エイリアス、Zod、JSON Schema、Go、Python、Java、C#、Kotlin、Swift、Rust。
  3. ルートの型名を設定します(例:User や OrderResponse)。入れ子の型には、キーにちなんだ名前が付きます。
  4. PATCH の本文のような部分的なペイロードには「すべてのプロパティをオプションにする」にチェックを入れます。言語が対応していればシリアライズ用のヘルパーも生成したい場合は、「型のみ」のチェックを外します。
  5. コードをコピーするか、適切な拡張子のファイルとしてダウンロードします。

よくある質問

JSON を TypeScript のインターフェースに変換するには?

「TypeScript(インターフェース)」を選んだ状態で、ボックスに JSON を貼り付けます。各オブジェクトは export されたインターフェースになります。文字列は string、数値は number、真偽値は boolean、配列は T[] になり、入れ子のオブジェクトには address → Address のように、キーにちなんだ名前の独自のインターフェースが作られます。結果を .ts ファイルにコピーし、レスポンスを解析する場所でインポートしてください。

インターフェースと型エイリアスのどちらを使うべきですか?

オブジェクトの形を表すなら、ほぼどちらでも同じです。インターフェースは拡張でき、再宣言でマージもでき、公開するオブジェクト型にはインターフェースを好むスタイルガイドが多くあります。型エイリアスはユニオン型やマップ型も表現できます。コードベースが型エイリアスのスタイルを好むなら、「TypeScript(型エイリアス)」オプションで `export type User = { ... }` が生成されます。

オプションのフィールドはどのように判定されますか?

サンプルから判定します。JSON がオブジェクトの配列で、一部のオブジェクトにキーがない場合、そのプロパティはオプション(name?: string)になります。すべてのレコードに存在するが null のキーは null に、あるレコードでは文字列で別のレコードでは null のキーは null | string になります。すべてのプロパティをオプションにするには、そのためのオプションを使ってください。

TypeScript のインターフェースではなく Zod スキーマを使うのはなぜですか?

インターフェースはコンパイル時にしか存在せず、API が本当に期待どおりのものを返したかは確認できません。Zod スキーマは実行時にデータを検証し(フィールドが欠けていたり型が違ったりすると UserSchema.parse(data) が例外を投げます)、z.infer で TypeScript の型も得られるので、1 つの定義で両方をまかなえます。生成される Zod のコードは、スキーマと推論された型の両方を export します。

日付や UUID も判定しますか?

「文字列内の日付、UUID、数値を検出」をオンにした場合だけです。JSON には日付型がないため、初期設定ではオフになっています。JSON.parse は "2026-03-14T09:26:53Z" を文字列として返すので、生成された変換処理も使わない限り、Date 型にするのは誤りです。検出をオンにすると、Go では time.Time、C# では DateTimeOffset と Guid、Python では datetime と UUID になります。

JSON はアップロードされますか?

いいえ。quicktype ライブラリは一度だけダウンロードされ(約 1 MB)、ブラウザのタブ内で動作します。JSON がどこかに送信されることはないので、個人データを含む実際の API レスポンスも安心して貼り付けられます。

JSON の値と各言語の型の対応

• 文字列:TypeScript、Go では string、Swift と Kotlin では String、Python では str、Java と Rust では String、C# では string。

• 整数:TypeScript では number、Go では int64、Python では int、Java では long、Kotlin では Long、C# では long、Swift では Int、Rust では i64。小数点のある数値は float64、float、double になります。

• 真偽値:各言語の表記どおり boolean、bool、Boolean、Bool。

• 配列:TypeScript では T[]、Go では []T、Python では List[T] または list[T]、Java、Kotlin、C# では List<T>、Swift では [T]、Rust では Vec<T>。

• 入れ子のオブジェクト:名前付きの別の型またはクラス。動的なキーを多数持つオブジェクト(ID のマップなど)は判定され、数百のフィールドではなくマップや Record として型付けされます。

• null:TypeScript では null、Go では interface{}、Python では None、C# では object。役に立つ型を得るには、サンプルでそのフィールドに実際の値を入れてください。

サンプルから正確な型を得るには

推論の精度はサンプル次第です。3 つの習慣で大きく変わります。1 つ目は、単一のオブジェクトではなく、複数のレコードを配列として貼り付けることです。そうすればオプションのフィールドや混在した型が見えてきます。2 つ目は、型がわかっているなら null を現実的な値に置き換えることです。すべてのレコードで null だったフィールドからは何の情報も得られません。3 つ目は、ルートの型名をペイロードの実際の名前(Root ではなく InvoiceResponse)に変えることです。入れ子の型はキーから名前が付くので、ルートの名前に意味があると、コードベースでずっと読みやすくなります。

API が自分のものなら、長い目で見た良い方法は、サンプルからではなくスキーマ(OpenAPI や JSON Schema)から型を生成することです。ここで出力される JSON Schema は、そのスキーマを書き始めるのに手頃な出発点になります。

関連する無料ツール

  • JSON 整形 — JSON を整形、圧縮(minify)、検証し、解析エラーは行と列で位置を示します。ブラウザ上で動作、アップロード不要。
  • curl コード変換 — Chrome の「Copy as cURL」を含む curl コマンドを貼り付けると、同じリクエストを Python、JavaScript、Node、Go、PHP、Ruby、Java、C#、wget、HTTPie のコードにします。
  • YAML バリデーター — YAML を検証し、各エラーの正確な行と列を表示。yes/no の真偽値、タブ、重複キーなど、パーサーが黙って受け入れてしまうミスも見つけます。
  • JWT デコーダー — JWT のヘッダーとペイロードをデコードし、有効期限をわかりやすく表示し、HS・RS・PS・ES の署名を検証したり、新しいトークンに署名したりできます。何もブラウザの外に出ません。
  • SQL フォーマッター — 乱雑な SQL を、PostgreSQL、MySQL、T-SQL、BigQuery などに対応した、読みやすく一貫したインデントのクエリに整形します。ブラウザで動作します。