Tool Kumarのツール
JSONをC#のクラスに変換
System.Text.Json用のC#モデルを生成します。デフォルトの出力では、各プロパティにJsonPropertyName属性を付け、すべてのサンプルレコードに存在するフィールドにはrequiredを使います。
このツールの使い方
- フィールドが異なるレコードも含めて、代表的なレスポンスを貼り付けます。
- 生成された出力を確認し、必要に応じてルート名を変更します。
- コードをコピーまたはダウンロードし、型がAPI仕様と合っているか確認します。
実行例
この出力は組み込みの変換機能で生成したものです。2つのitemのpriceからは浮動小数点数のフィールドが、nullと文字列のnoteからはnull許容のフィールドが推論されます。
入力
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}出力
using System.Collections.Generic;
using System.Text.Json.Serialization;
public class Root
{
[JsonPropertyName("user-id")]
public required long UserId { get; set; }
[JsonPropertyName("profile")]
public required Profile Profile { get; set; }
[JsonPropertyName("items")]
public required List<Item> Items { get; set; }
}
public class Profile
{
[JsonPropertyName("city")]
public required string City { get; set; }
[JsonPropertyName("created_at")]
public required string CreatedAt { get; set; }
}
public class Item
{
[JsonPropertyName("price")]
public required double Price { get; set; }
[JsonPropertyName("note")]
public required string? Note { get; set; }
}
System.Text.Jsonでデシリアライズする
クラスを.NETプロジェクトにコピーし、null許容注釈を有効にします。JsonPropertyName属性によって、PascalCaseのプロパティが入力のキーと正確に対応付けられます。
System.Text.Jsonがrequiredメンバーに対応している.NETのバージョン(.NET 7以降など)を使ってください。シリアライザーのオプションは、アプリケーションに合わせて設定します。
using System.Text.Json;
Root? model = JsonSerializer.Deserialize<Root>(responseBody);オプションと注意点
- デフォルトはSystem.Text.Jsonです。「その他のオプション」で「Newtonsoft」を選ぶと、Newtonsoft.JsonのJsonProperty属性が付き、不明な値にはJTokenが使われます。
- 生成されるrequiredメンバーには、C# 11以降が必要です。null許容参照型の構文は、null許容注釈が有効になっていることを前提としています。
- 整数はlong、符号付き64ビットを超える整数はdecimal、小数はdoubleになります。decimalにも範囲の上限があるため、さらに大きな値には独自の表現を選んでください。
- すべてのレコードにキーがあれば、null許容のフィールドでもrequiredになることがあります。キーの存在が必須であることと、nullを受け付けることは別のルールです。日付はstringのままです。
標準でプライバシーを保護
ドキュメントはこのブラウザー内に残ります。Tool Kumarは、解析、変換、ダウンロードファイルの作成を端末内で行います。アカウント登録やアップロードの手順はありません。
JSONをC#のクラスに変換のよくある質問
- System.Text.JsonとNewtonsoft.Jsonのどちらを使いますか?
- デフォルトはSystem.Text.Jsonで、JsonPropertyName属性を使います。変換ツールの「その他のオプション」メニューで「Newtonsoft」を選ぶと、代わりにNewtonsoft.JsonのJsonProperty属性を出力します。
- 出力にはどのバージョンのC#が必要ですか?
- requiredメンバーにはC# 11以降が必要です。string?などの参照型の注釈を意図どおりに使うには、null許容参照型を有効にしてください。
- requiredのプロパティがnull許容にもなるのはなぜですか?
- キーはすべてのサンプルレコードに現れますが、値はnullの場合があるためです。たとえばrequired string? Noteは、キーの存在と値の型を別々に表しています。
- リストやネストしたクラスも生成されますか?
- はい。オブジェクトの配列はList<Item>になり、ネストした構造ごとにクラスが生成されます。