Skip to main content
CheckTown
Конвертеры

JSON в C#: генерируйте классы .NET из ответов API

Опубликовано 5 мин чтения
В этой статье

Зачем генерировать классы C# из JSON?

При работе с REST API в .NET или Unity вам нужны строго типизированные классы C# для десериализации JSON-ответов. Писать эти классы вручную утомительно и чревато ошибками, особенно для глубоко вложенных API-ответов. Генератор JSON в C# анализирует структуру JSON и автоматически создает готовые к использованию определения классов.

Это особенно ценно при быстром прототипировании. Вы вставляете пример ответа API, получаете идеально структурированные классы C# и сразу начинаете работать с типизированными данными вместо динамических объектов.

Режимы вывода и параметры сериализации

Генератор поддерживает несколько форматов вывода для соответствия стилю кода и версии .NET вашего проекта. Каждый режим создает идиоматический C#, который компилируется без изменений.

  • Class vs Record — традиционные изменяемые классы для старых проектов .NET или записи C# 9+ для неизменяемых объектов передачи данных со встроенным сравнением по значению
  • System.Text.Json — современный высокопроизводительный сериализатор, встроенный в .NET Core 3.1+, использующий атрибуты [JsonPropertyName]
  • Newtonsoft.Json — широко используемая библиотека Json.NET с атрибутами [JsonProperty], по-прежнему доминирующая в устаревшем .NET Framework и проектах Unity

Попробуйте бесплатно — без регистрации

Конвертировать JSON в C# →

Конвенции именования C# и аннотации

C# следует строгим конвенциям именования, отличающимся от типичного camelCase или snake_case JSON. Генератор автоматически применяет эти преобразования, сохраняя оригинальные имена свойств JSON через атрибуты сериализации.

  • Свойства PascalCase — все сгенерированные имена свойств преобразуются в PascalCase (например, user_name становится UserName) согласно рекомендациям Microsoft по именованию .NET
  • Шаблоны аннотаций — каждое свойство включает соответствующий атрибут сериализации ([JsonPropertyName] или [JsonProperty]), отображающий свойство PascalCase на оригинальное имя ключа JSON
  • Вывод типов — генератор выводит типы C# из значений JSON: строки становятся string, числа становятся int или double, логические значения становятся bool

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

Как генератор обрабатывает nullable ссылочные типы?

Когда значение JSON равно null, генератор создает nullable ссылочный тип (string? вместо string). Это соответствует конвенциям nullable ссылочных типов C# 8+ и помогает обнаружить потенциальные исключения null reference во время компиляции.

Использовать List<T> или массивы для массивов JSON?

Генератор по умолчанию использует List<T>, поскольку он предоставляет более богатую функциональность (Add, Remove, Contains) и является наиболее распространенным типом коллекции в кодовых базах C#. Вы можете вручную изменить сгенерированный тип при необходимости.

Можно ли генерировать записи вместо классов?

Да. Режим record генерирует типы записей C# 9+ со свойствами init-only. Записи идеальны для объектов передачи данных, поскольку обеспечивают неизменяемость, сравнение по значению и лаконичный синтаксис.

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