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#
- Вставьте образец JSON в поле Входной JSON (либо нажмите Загрузить пример или Открыть файл).
- Задайте Имя корневого типа (по умолчанию
Root). - Скопируйте сгенерированный код 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.