開発者 🔒 ブラウザ内で動作 — データは送信されません

JSON型定義ジェネレーター(TypeScript・Go・Python)

JSONのサンプルから、TypeScriptのinterface、Goの構造体、Pythonのモデル、C#のクラス、Rustの構造体、JSON Schemaを生成します。

JSON型定義ジェネレーター — TypeScript・Go・Python・C#・Rust・JSON Schema

APIのレスポンスなどのJSONサンプルを貼り付けると、それに合う型定義が手に入ります。TypeScriptのinterface、JSONタグ付きのGoの構造体、Pydanticモデルやdataclass、C#のクラス、serde用のRustの構造体、そしてJSON Schemaです。入れ子のオブジェクトはそれぞれ名前付きの型になるため、結果は人が手で書いたようなコードになります。

APIのレスポンスには、実際の顧客データ、トークン、社内のIDが含まれていることがよくあります。変換はすべてブラウザー内で行われるので、そのどれもが外部に送信されることはありません。

使い方

  1. 左の欄にJSONを貼り付けるか、サンプルを押して例を表示します。
  2. 出力形式で言語を選びます。
  3. 最上位の型の名前をルートの型名に入力します。TypeScriptではinterfaceかtypeかを選びます。
  4. 結果をコピーしてプロジェクトに貼り付けます。

型の決まり方

  • 数値は、すべての値が整数なら整数型、そうでなければ浮動小数点型になります。同じフィールドに42と18.5があれば浮動小数点型です。
  • オブジェクトの配列はマージされます。どれか1つの要素にでも現れたキーは、すべて型に含まれます。
  • 省略可能なフィールド:欠けているキーを省略可能にするがオンなら、一部の要素にないキーは省略可能になります(coupon?: string、omitempty、Option、= None)。
  • null許容のフィールド:ある要素で値がnullなら、そのフィールドはnull許容になります。たとえばstring | null、Goでは*stringです。
  • 型の混在(ある要素では数値、別の要素では文字列など)はunknown、Any、interface{}になるので、手で判断できます。
  • 名前はキーから付けられます。addressからはAddress、ordersの要素からはOrderができます。同じ形のオブジェクトは1つの型を共有します。

言語ごとの出力

出力形式得られるもの
TypeScriptexport interfaceまたはexport type。名前として使えないキーは引用符で囲まれます
Gojsonタグ付きのエクスポートされた構造体、int64とfloat64、IDやURLのような慣例的な頭字語
Python (Pydantic)BaseModelのクラス。フィールドはsnake_caseで、JSONのキーと異なる場合はField(alias=...)が付きます
Python (dataclass)@dataclassのクラス。dataclassの制約に合わせて、省略可能なフィールドは最後に置かれます
C#System.Text.Json用の[JsonPropertyName]付きクラス、long、double、List<T>
RustSerializeとDeserializeをderiveした構造体。必要な箇所には#[serde(rename)]が付きます
JSON Schemarequiredのリストを含むdraft 2020-12のスキーマ。そのままバリデーターで使えます

より正確な型を得るには

型の完全さは、元になったサンプル次第です。省略可能なフィールドがどれも少なくとも1回は含まれているレスポンスを使い、要素が1つだけの配列ではなく、内容の異なる要素をいくつも含む配列を貼り付けてください。そうすればマージの際に、どのフィールドが変化するのかがわかります。日付はJSONでは文字列として届き、生成される型でも文字列のままです。本当の日付型が必要な箇所では、コードの中で変換してください。

関連ツール

先にJSONを整えたり検証したりするにはJSON整形ツールを、YAML・CSV・XMLに変換するにはJSON変換ツールを使ってください。次のタスクページでは、言語を選んだ状態でこのツールが開きます:JSONをTypeScriptに変換、JSONをGoに変換、JSONをPythonに変換、JSONをC#に変換、JSON Schema生成。

関連ガイド