Инструмент Tool Kumar

JSON в классы C#

Генерируйте модели C# для System.Text.Json. По умолчанию каждое свойство получает атрибут JsonPropertyName, а поля, которые есть в каждой записи примера, помечаются как required.

Как пользоваться инструментом

  1. Вставьте типичный ответ, включая записи с разным набором полей.
  2. Проверьте сгенерированный код и при необходимости измените имя корня.
  3. Скопируйте или скачайте код, затем сверьте типы с контрактом вашего 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>, а для каждой вложенной структуры генерируется отдельный класс.

Похожие инструменты

JSON в Java, JSON в TypeScript и Генератор JSON Schema.