Инструмент Tool Kumar
JSON в классы C#
Генерируйте модели C# для System.Text.Json. По умолчанию каждое свойство получает атрибут JsonPropertyName, а поля, которые есть в каждой записи примера, помечаются как required.
Как пользоваться инструментом
- Вставьте типичный ответ, включая записи с разным набором полей.
- Проверьте сгенерированный код и при необходимости измените имя корня.
- Скопируйте или скачайте код, затем сверьте типы с контрактом вашего API.
Пример с разбором
Этот результат создан встроенным конвертером. По двум ценам товаров выводится тип поля с плавающей точкой. Значения 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 с точными ключами входных данных.
Используйте версию .NET, в которой System.Text.Json поддерживает члены с модификатором required, например .NET 7 или новее. Настройте параметры сериализатора для своего приложения.
using System.Text.Json;
Root? model = JsonSerializer.Deserialize<Root>(responseBody);Параметры и особые случаи
- По умолчанию используется System.Text.Json. Выберите Newtonsoft в меню «Дополнительно», чтобы получить атрибуты JsonProperty из Newtonsoft.Json и 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. Чтобы вместо них получить атрибуты JsonProperty из Newtonsoft.Json, выберите Newtonsoft в меню «Дополнительно» конвертера.
- Какая версия C# нужна для этого кода?
- C# 11 или новее — для членов с модификатором required. Включите ссылочные типы, допускающие значение null (nullable reference types), чтобы string? и другие аннотации ссылочных типов работали как задумано.
- Почему required-свойство может допускать null?
- Ключ есть в каждой записи примера, но его значение может быть null. Например, required string? Note описывает наличие ключа отдельно от типа значения.
- Генерирует ли он списки и вложенные классы?
- Да. Массивы объектов становятся List<Item>, а для каждой вложенной структуры генерируется отдельный класс.