JSON в классы C#

Создавайте классы C# по JSON со свойствами в PascalCase, атрибутами [JsonPropertyName], ссылочными типами, допускающими null, и коллекциями List<T>. Бесплатно и приватно.

Использует атрибуты System.Text.Json и nullable-ссылочные типы (string?, long?).

Работает полностью в вашем браузере. Ваши данные никуда не загружаются.

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

Просмотреть Все

Что такое JSON в C#?

Превращает образец JSON в классы C# для System.Text.Json. Каждое свойство — в PascalCase, с атрибутом [JsonPropertyName("…")] с исходным ключом и с типами, допускающими null, там, где в образце встречаются null или отсутствующие значения.

Как пользоваться JSON в C#

  1. Вставьте образец JSON в поле Входной JSON (либо нажмите Загрузить пример или Открыть файл).
  2. Задайте Имя корневого типа (по умолчанию Root).
  3. Скопируйте сгенерированный код C# или нажмите Скачать, чтобы сохранить его в файл.

Пример

Ввод
{"id":1,"name":"A","tags":["x"]}
Вывод
using System.Collections.Generic;
using System.Text.Json.Serialization;

public class Root
{
    [JsonPropertyName("id")]
    public long Id { get; set; }

    [JsonPropertyName("name")]
    public string Name { get; set; } = string.Empty;

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

Когда использовать JSON в C#

Используйте для HTTP-клиентов .NET, моделей ASP.NET или тестовых данных. Для Newtonsoft.Json замените атрибут на [JsonProperty]; для денежных значений подумайте о замене double на decimal.

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

Образец обходится рекурсивно, и каждая позиция собирает встреченные в ней типы. Массивы объектов объединяются в один тип: ключ, отсутствующий у части элементов, становится необязательным, ключ, который где-то равен null, получает допустимое значение null, целые числа вперемешку с дробными становятся типом с плавающей точкой, а всё остальное со смешанными типами сводится к динамическому типу. Вложенные объекты становятся собственными именованными типами (PascalCase от ключа, ключи-массивы переводятся в единственное число: orders → Order), а при совпадении имён добавляются числовые суффиксы. В C# целые числа превращаются в long, дробные — в double, строки — в string, логические значения — в bool, массивы — в List<T>, вложенные объекты — в собственные классы, а динамические значения — в object?. Значения с null или необязательные получают ?; строки без null инициализируются string.Empty, а списки и объекты — new(), поэтому код чисто компилируется при включённых ссылочных типах, допускающих null.

Распространенные Случаи Использования

  • Десериализация ответа API через HttpClient и System.Text.Json
  • Создание моделей запроса и ответа для контроллера ASP.NET
  • Описание разделов конфигурации JSON
  • Генерация классов для триггеров Azure Function

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

Почему у каждого свойства есть аннотация?

Атрибут сохраняет точный ключ JSON, даже если имя в C# отличается, так что сериализация даёт тот же результат независимо от политики именования.

Почему double, а не decimal?

В JSON нет типа decimal; double соответствует тому, что выдаёт парсер. Для денежных значений используйте decimal.

Работает ли это с Newtonsoft.Json?

Да, после замены [JsonPropertyName] на [JsonProperty] и директивы using.

Другие категории