JSON 型定義ジェネレーター

概要

JSON 型ジェネレーターは、JSON サンプルを TypeScript・Rust・Kotlin・Python・JSON Schema の型定義に自動変換します。左側に JSON を貼り付け、出力モードを選択するとリアルタイムで右側に生成コードが表示されます。API レスポンスやデータモデルの型定義を手動で書く手間をなくすツールです。

出力モードのサンプル

以下の JSON 入力に対して:

{
  "user": {
    "id": 123,
    "name": "Alice",
    "roles": ["admin", "viewer"]
  }
}

TypeScript (interface) はこのように出力されます:

export type Root = {
  user: User;
};

export type User = {
  id: number;
  name: string;
  roles: string[];
};

Rustserde に依存する #[derive(Serialize, Deserialize)] 注釈付きの struct を生成します。Python は Pydantic v2 の BaseModel クラスを生成します。Kotlin (Jackson)@JsonProperty アノテーション付きの data class を生成します。

8 種類の出力モード

  • TypeScript (interface):オブジェクトごとに独立した interface 宣言 — 大規模プロジェクトに適する
  • TypeScript (単一型エイリアス):ネストされた型をインライン化した type — すぐに使いたい場合に便利
  • Rust:serde 注釈付き struct
  • Kotlin (Jackson)@JsonProperty data class
  • Kotlin (kotlinx.serialization)@Serializable data class
  • Python (Pydantic):Pydantic v2 BaseModel
  • JSON Schema:API ドキュメント用の標準スキーマ形式
  • Shape:ツール内部の型分析中間表現 — 推論のデバッグに役立つ

型推論の仕組みと限界

ツールは提供されたサンプルから静的に型を推論します:

  • 数値は整数と浮動小数点を区別しません(TypeScript は number、Rust は値の形に応じて i64/f64 になります)
  • null の値はフィールドをオプションにします
  • 配列内の混在型はユニオン型を生成します
  • 空の配列は unknown[] を生成します

これらの推論の精度はサンプルの質に依存します。API がフィールドに null を返すことがあってもサンプルに常に値がある場合、生成された型はオプショナル性を見逃します。実際に API が返すデータの全範囲に照らして常に出力を確認してください。

高度なオプション

プロパティ名フォーマット:JSON の snake_case キーをターゲット言語の命名規則に変換します。camelCase・PascalCase・snake_case・SCREAMING_SNAKE_CASE・kebab-case に対応。

型名:ルート型の名前を設定します。デフォルトは Root です。コードベースに貼り付ける前に UserResponse のような意味のある名前に変更してください。

展開パス:JSON Pointer 構文(例:/items/-/data)を使って深くネストされたパスをトップレベルに昇格させます。- は配列のワイルドカードで、items[].data にデータが入っているページネーション API レスポンスで役立ちます。

追加プロパティを収集:TypeScript では [key: string]: unknown などのインデックスシグネチャを追加して、サンプルに含まれないフィールドも許容するようにします。