C# から JSON へのコンバーター
C# のクラスやオブジェクトを貼り付ければ、きれいな JSON を返します。
このツールでできること
テスト用、API 呼び出し用、ドキュメント用に C# クラスと同じ形の JSON ペイロードを手で書き起こしたことがある方なら、その面倒くささはご存じのはず。ここに C# を貼り付ければ、手で書き直すことなく有効な JSON が返ります。単一の オブジェクト初期化子でも、複数クラスを含むモデルファイル全体でも、深くネストされた構造でも結果は同じ。全フィールドを保った完全な JSON ドキュメントが得られます。
単純な文字列置換ではありません。C# が実行時に実際にどうシリアライズされるかを踏まえて変換します。49.99m のような decimal のサフィックスは m が外れて JSON の数値になり、DateTime と DateTimeOffset は RFC 8259 に沿った ISO-8601 文字列に、Guid は標準的な 16 進文字列に、null 値の nullable は null になります。コレクションは System.Text.Json や Newtonsoft.Json の出力に合わせ、List<T> や配列は JSON 配列、Dictionary<K,V> は JSON オブジェクトになります。
シリアライズ属性もそのまま反映されます。[JsonPropertyName("x")] はキー名をリネームし、[JsonIgnore] はそのプロパティを出力から除外します。複数のクラスをまとめて貼り付けると、それぞれが JSON のトップレベルのエントリとして出てきて、ネストされた型は展開され、基底クラスから継承したプロパティも取り込まれます。気づかないうちに欠落することはありません。
使い方
3 ステップです。5 行貼り付けても、モデルファイル丸ごと貼り付けても動作は同じです。
C# を貼り付ける(またはサンプルを試す)
左のエディターに C# をそのまま貼り付けてください。オブジェクト初期化子、クラス定義全体、複数のクラス、ネストされた構造、どれも問題ありません。先に実例を見たい場合は Load Sample をクリック。
コードを整形する必要はありません — C# の構文、アクセス修飾子、属性はそのままで OK。ただ貼り付けるだけです。
「変換」を押す
緑の Convert ボタンをクリック。ツールは C# を読み取り、すべてのクラスとプロパティを保持したまま、一度のパスで JSON を組み立てます。実行中は短いローディングが表示されます。
JSON をコピーする
右のパネルにはインデント済みの、MDN 準拠の JSON が表示されます。そのまま API リクエスト、テストフィクスチャ、設定ファイル、ドキュメントに貼り付けられます。
こんなときに役立ちます
API フィクスチャを作る
C# のリクエストモデルがあり、Postman や curl に貼る JSON ペイロードが欲しい。クラスを貼り付けて、JSON を受け取って、次の作業へ。
設定ファイルのひな形を作る
40 個のプロパティを持つ Settings クラスが、appsettings.json や各種設定ストア向けに編集可能な JSON テンプレートに。手書きのボイラープレートは不要です。
ドキュメントを同期させる
README や API リファレンス、OpenAPI スペック用の JSON サンプルを、実際のモデルから直接生成。ドキュメントがコードに追随します。
テストデータを用意する
ユニットテストのオブジェクト初期化子を、結合テストやモックサーバー、DB フィクスチャ用の JSON シードファイルに変換できます。
よくある質問
複数のクラスを一度に貼り付けられますか?
はい — ファイル丸ごと貼り付けて大丈夫です。トップレベルの各クラスは JSON 内でそれぞれ独自のキーとして出力され、ネストされた型は展開、基底クラスから継承したプロパティも含まれます。抜け落ちはありません。
[JsonPropertyName] や [JsonIgnore] といった属性には対応していますか?
はい。[JsonPropertyName("x")] と [JsonProperty("x")] は JSON のキー名をリネームし、[JsonIgnore] はそのプロパティを出力から外します — System.Text.Json と同じ挙動です。
decimal、DateTime、Guid など C# の定番型はどう扱われますか?
decimal(49.99m)はサフィックスが外れて JSON の数値になります。DateTime と DateTimeOffset は ISO-8601 文字列に、Guid は 8-4-4-4-12 形式の標準 16 進文字列に、TimeSpan は期間を表す文字列になります。null 値の nullable は JSON の null に、そうでなければ基になる型としてシリアライズされます。
ネストされたクラス、List、Dictionary はどうなりますか?
List<T>、配列、HashSet<T>、IEnumerable<T> はすべて JSON 配列になります。Dictionary<K,V> は JSON オブジェクトです。ネストされたオブジェクト初期化子 — たとえば Order の中の Address — は、すべてのフィールドをそのまま残してネストされた JSON オブジェクトに展開されます。
貼り付けたコードは保存されますか?
コードは変換のためにバックエンドに送信されますが、保存はされません — ペイロードのログも取っていません。オンラインツール全般に言えることですが、本当に機密性の高いコードなら、貼る前に一度目を通してください。
メソッド、delegate、IntPtr のような変わった要素が C# に含まれている場合は?
そうした要素は変換全体を失敗させずに null として出力されるので、モデルの残りの部分はちゃんと通ります。コード自体に構文エラーがある場合は、明らかなものだけでも先に直してください — パーサーは寛容ですが、魔法ではありません。
一緒に使うと便利なツール
C# から JSON への変換はパズルの一片に過ぎません。相性のよいツールを紹介します。