JSON в класс C#

Вставьте образец JSON и получите готовые классы C# POCO для вставки в файл .cs. Инструмент подбирает подходящие типы, обрабатывает вложенные объекты, добавляя дополнительные определения классов, поддерживает nullable-ссылочные типы и выдаёт атрибуты System.Text.Json или Newtonsoft.Json в зависимости от вашего проекта.

Как преобразовать JSON в C#

  1. 1

    Вставьте JSON

    Достаточно одного образца. Несколько образцов улучшают вывод nullable-типов и типов элементов массива.

  2. 2

    Выберите стиль

    System.Text.Json (.NET 6+) или Newtonsoft.Json (устаревший). Имена свойств в PascalCase с атрибутом `[JsonPropertyName]` для JSON в формате camelCase.

  3. 3

    Выберите целевую версию C#

    C# 10+ для записей и пространств имён на уровне файла, C# 8 для nullable-ссылочных типов или более ранние версии для максимальной совместимости.

  4. 4

    Скопируйте классы

    Один корневой класс плюс вложенные классы для каждой формы объекта, всё в одном файле, готовом для добавления в ваш проект.

Пример вывода

Для ввода:

{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }

Вывод System.Text.Json (C# 10+):

public class User
{
    [JsonPropertyName("firstName")]
    public string FirstName { get; set; } = default!;

    [JsonPropertyName("age")]
    public int Age { get; set; }

    [JsonPropertyName("emails")]
    public List<string> Emails { get; set; } = new();

    [JsonPropertyName("address")]
    public Address Address { get; set; } = default!;
}

public class Address
{
    [JsonPropertyName("city")]
    public string City { get; set; } = default!;
}

Сопоставление типов

JSON Тип C#
строка string
целое число int (или long для значений > int.MaxValue)
число (дробное) double (или decimal, если выбрано)
логическое значение bool
null object? (или объединяется с соседним полем)
дата ISO-8601 DateTime (или DateOnly)
строка в формате GUID Guid
массив строк List<string>
объект Вложенный класс

Варианты атрибутов

  • System.Text.Json ([JsonPropertyName("foo")]), предпочтителен для .NET 6+ и новых проектов.
  • Newtonsoft.Json ([JsonProperty("foo")]), для устаревших проектов или когда нужны специфичные возможности Newtonsoft.
  • Без атрибутов, имена свойств точно совпадают с ключами JSON (работает только если ключи JSON уже в PascalCase).

Частые ошибки

  • Использование int для поля, которое может переполниться. Если в вашем JSON есть значения, превышающие int.MaxValue, используйте long. Генератор повышает тип автоматически, когда встречает большие значения.
  • Отсутствие [JsonIgnore] для вычисляемых свойств. Если вы добавляете вспомогательные свойства в сгенерированный класс, пометьте их атрибутом [JsonIgnore], иначе они будут сериализованы при выводе.
  • Забытый разбор, независимый от культуры. Поля decimal следует десериализовать с CultureInfo.InvariantCulture; System.Text.Json делает это по умолчанию, Newtonsoft, через глобальные настройки.
  • Доверие генератору по одному образцу. Nullability и типы элементов массива определяются по тому, что генератор видит. Всегда сверяйте nullable-аннотации с реальным поведением вашего API.

Часто задаваемые вопросы

Для новых проектов на .NET 6+ используйте System.Text.Json, он быстрее, встроен и теперь поддерживает почти все возможности Newtonsoft. Newtonsoft используйте для устаревших проектов или когда нужны его специфичные возможности (пользовательские contract resolver, JObject, динамическая обработка).

Записи идиоматичны для неизменяемых DTO в C# 10+. Они дают равенство по значению и лаконичный синтаксис. Классы лучше подходят, когда нужна изменяемость или совместимость со старым кодом. Инструмент позволяет выбрать любой вариант.

Если ваш проект использует nullable-ссылочные типы (C# 8+), поля, где хотя бы в одном образце встретился null, становятся string?, int? и т. д. Без nullable-ссылочных типов допустимость null указывается только для значимых типов (например, int?).

Смешанные массивы из объектов разной формы нельзя напрямую представить в строго типизированном C#. Инструмент выводит общий базовый класс или (в качестве запасного варианта) object; для смешанных массивов обычно лучше пересмотреть структуру JSON.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Шпаргалка по Markdown

Практический справочник Markdown с настоящим предпросмотром и готовыми для копирования примерами заголовков, списков, таблиц, кода, ссылок, изображений и синтаксиса GFM.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Шпаргалка по регулярным выражениям

Поисковый справочник регулярных выражений для JavaScript, PCRE2/PHP, Python re и .NET. Сравнивайте токены, синтаксис движков, якоря, группы, проверки и флаги.

Инструмент доступен на других языках