JSON → TypeScript / C# 型 変換

JSON サンプルから TypeScript interface や C# クラスを生成し、ネストした型と optional・nullable のフィールドを推論します。

読み込み中…

使い方

  1. JSON サンプル(API レスポンスなど)を入力欄に貼り付けます。
  2. 「出力」で TypeScript interface か C# class を選びます。
  3. 「ルート型の名前」を決めます(空なら Root)。JSON が配列の場合、要素は名前の後に Item を付けた型(例: RootItem)になります。
  4. 入力に合わせてコードが更新されます。ネストしたオブジェクトはキー名を PascalCase にした別の型になり、配列内のオブジェクトは単数形の名前(items → Item)になります。
  5. 「コピー」でコードをコピーします。正しい JSON でない場合は「正しい JSON ではありません」とパーサーのメッセージが表示されます。

よくある質問

入力した JSON はサーバーに送信されますか?
いいえ。ブラウザー内で型を生成します。
optional と nullable はどう決まりますか?
同じ配列内のオブジェクトは1つの型にまとめます。一部のオブジェクトにしかないフィールドは optional(TypeScript では名前の後に ?、C# では nullable 型)、サンプルのどこかで null のフィールドは TypeScript で | null、C# で ? が付きます。
数値はどの型になりますか?
TypeScript ではすべて number です。C# では整数は int、int の範囲(±2147483647)を超える整数は long、小数を含むと double になり、1つのフィールドに混在する場合は最も広い型を使います。JSON の 1.0 は整数として扱われます。
型が混在する配列、空の配列、null だけのフィールドは?
TypeScript では種類の違う値を string | number のようなユニオンにするため、混在した配列は (string | number)[] になります。C# にはユニオンがないので object を使います。空の配列は unknown[] / List<object>、常に null のフィールドは null / object? になります。
C# のプロパティ名はどう決まりますか?
JSON のキーを PascalCase に変換します(user_id → UserId)。プロパティ名がキーと異なる場合は System.Text.Json 用の [JsonPropertyName] 属性で元のキーを残します。TypeScript では識別子として使えないキーを引用符で囲みます。