JSON to C#クラスジェネレーター
JSONを貼り付けて、適切な型、命名規則、シリアライズ属性を備えたC#クラス定義を生成します。
このツールについて
.NETで外部APIを扱う場合、まずJSONレスポンスを受け取り、デシリアライズ用のC#クラスを作成するところから始まります。どのフィールドがnull許容か判断し、子オブジェクトをネストし、プロパティ名を正しく設定する手作業は面倒でミスが起きやすい作業です。このツールはその作業をミリ秒で完了します。
任意のJSONペイロードを貼り付けると、System.Text.Json または Newtonsoft.Json ですぐに使用できるクリーンなC# POCOクラスが生成されます。各JSONキーは標準の.NET命名規則に従ってPascalCaseプロパティにマッピングされ、元のキー名は [JsonPropertyName("...")] 属性に保持されるため、追加設定なしでデシリアライズが動作します。ネストオブジェクトは独自のクラス定義になり、配列は List<T> として型付けされ、プリミティブ値は string、int、double、bool に適切にマッピングされます。
null許容参照型もそのまま対応しています。JSON値が null の場合、対応するC#プロパティは ? サフィックス付きで生成されます(例:string? や int?)。プロジェクトファイルで <Nullable>enable</Nullable> を設定していてもコンパイルエラーになりません。従来のクラスよりC# 9+のrecord型を好む場合は、トグルで public record 宣言に切り替えられます。不変のDTOに最適です。
フロントエンドモデル用にJSON to TypeScriptコンバーターをすでに使用している場合、このツールは.NET側で同じ利便性を提供します。JSONフォーマッターで入力を先に検証したり、コントラクトファースト開発が必要な場合はJSONスキーマジェネレーターで正式なスキーマを生成することもできます。
すべてのパース処理とコード生成はJavaScriptを使用してブラウザ内で完全に実行されます。JSONデータがサーバーに送信、ログ記録、保存されることはありません。ツール使用中にDevToolsのNetworkタブを開くと、送信リクエストがゼロであることを確認できます。
使い方
- 左側の JSON Input パネルにJSONを貼り付けまたは入力します。
- 編集に応じて右パネルのC#クラス出力が自動更新されます。
- Root class name を設定して、トップレベルのクラス名をカスタマイズします(デフォルトは "Root")。
- Records トグルで従来のクラスの代わりにC# 9+ record型を生成します。
- Nullable トグルでnull値を持つフィールドにnull許容参照型(
string?、int?)を出力します。 - シリアライズフレームワークを選択します — System.Text.Json 属性または Newtonsoft.Json の
[JsonProperty]属性。 - Copy をクリックするか Ctrl+Shift+C で生成されたC#コードをクリップボードにコピーします。Sample でサンプルJSONを読み込めます。
JSON to C#の人気サンプル
よくある質問
ネストJSONオブジェクトはどのように処理されますか?
JSON入力の各ネストオブジェクトは個別のC#クラス定義になります。クラス名は親のプロパティキーをPascalCaseに変換して生成されます。例えば、「billing_address」というJSONフィールドはBillingAddressという名前のクラスを生成し、独自のプロパティセットを持ちます。深くネストされた構造も再帰的に処理されるため、JSONの階層がどれだけ深くても完全なクラスセットが得られます。
出力はSystem.Text.JsonとNewtonsoft.Jsonの両方で使えますか?
はい。オプションで使用するシリアライズライブラリを選択できます。System.Text.Json選択時はプロパティに[JsonPropertyName("...")]が付与されます。Newtonsoft.Json選択時は[JsonProperty("...")]が使用されます。どちらも元のJSONキー名が保持されるため、カスタムコンバーターなしで正しくデシリアライズされます。
null許容型はどのように処理されますか?
nullableオプションを有効にすると、null値を持つJSONフィールドはnull許容C#型として生成されます(例:stringではなくstring?、intではなくint?)。これは.csprojファイルで<Nullable>enable</Nullable>を設定している場合に期待される動作と一致します。JSONで実際の値を持つフィールドはデフォルトで非null許容として生成されます。
プロパティにはどの命名規則が使用されますか?
すべてのJSONキーは標準の.NET規約に従ってC#プロパティ名用にPascalCaseに変換されます。「first_name」はFirstNameに、「userEmail」はUserEmailに、「id」はIdになります。元のJSONキーは常にシリアライズ属性に保持されるため、手動マッピングなしでラウンドトリップシリアライズが動作します。
クラスの代わりにrecord型を生成できますか?
はい。Recordsトグルを有効にすると、C# 9+ record宣言(public record ClassName)が出力されます。recordは値ベースの等価性、組み込みのToString()フォーマット、with式サポートを提供するため、不変のデータ転送オブジェクトに最適です。生成されたrecordはinit-onlyプロパティを使用し、デシリアライズ後に変更すべきでないAPIレスポンスモデルに適しています。
データは安全ですか?
はい。貼り付けたJSONはブラウザの組み込みJSON.parse()関数でパースされ、C#コードはクライアントサイドJavaScriptの文字列テンプレートから組み立てられます。ブラウザの外には何も送信されません — API呼び出し、サーバーサイド処理、入力データのテレメトリは一切ありません。ツール使用中にブラウザのDevToolsのNetworkタブで確認できます。
JSON配列はどのようにC#型にマッピングされますか?
配列は最初の要素から型を推論してList<T>にマッピングされます。文字列の配列はList<string>、数値の配列はList<int>またはList<double>、オブジェクトの配列はList<ClassName>(ClassNameはプロパティキーから生成)になります。空の配列は要素型を判定できないためList<object>がデフォルトになります。
関連ツール
JSON → TypeScript変換
JSONからネストされた型推論付きでTypeScriptインターフェースや型エイリアスを生成します。
JSON → Go構造体変換
JSONからjsonタグと適切な命名規則でGoの構造体定義を即座に生成します。
JSON → Kotlinデータクラス変換
JSONからシリアライゼーションアノテーション付きのKotlinデータクラスを生成します。
JSON → Python変換
JSONからPythonのdataclassまたはTypedDictを生成。型安全なPythonコードを任意のJSON構造から生成。
JSONスキーマ生成
サンプルJSONから型推論、必須フィールド、ネストされたオブジェクト対応でJSONスキーマを生成します。