UTILS.
100% в браузере
💠

JSON в классы C#

Сгенерируйте классы моделей C# из примера JSON для System.Text.Json или Newtonsoft.Json со свойствами в PascalCase и nullable-типами значений.

результат

Об этом инструменте

Инструмент JSON в классы C# преобразует вставленный пример JSON в классы или записи моделей C#, так что разработчики .NET могут создать DTO из ответа API за секунды. Он разбирает JSON, рекурсивно выводит типы C# и выдаёт по одному типу на объект: строки становятся string, строки даты-времени ISO — DateTime, целые числа — int или long, другие числа — double, логические значения — bool, массивы — List<T>, а вложенные объекты — собственными классами в PascalCase, объявленными раньше родителей, которые на них ссылаются.

Весь разбор и генерация кода происходят локально в вашем браузере через JSON.parse и обычный JavaScript — ничего не загружается. Свойства выдаются как авто-свойства в PascalCase, public T Prop { get; set; }. Когда ключ JSON отличается от имени свойства в PascalCase, инструмент добавляет [JsonPropertyName("originalKey")] для System.Text.Json или [JsonProperty("originalKey")] для Newtonsoft, и включаются только необходимые директивы using.

Свойства-типы значений, которые могут быть null в любом примере, делаются nullable (int?, double?, bool?, DateTime?), тогда как ссылочные типы вроде string и List уже nullable. Переключатель сериализатора переключает стиль атрибутов и using между System.Text.Json (по умолчанию) и Newtonsoft.Json; переключатель формы выдаёт либо классы (по умолчанию), либо записи. Скопируйте код или скачайте его как файл .cs.

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

Как типы JSON сопоставляются с C#?
string в string, дата-время ISO в DateTime, целое число в int (long за пределами диапазона int), нецелое число в double, логическое значение в bool, массив в List<T>, а объект в именованный класс или запись. Nullable-типы значений получают завершающий модификатор ?.
System.Text.Json или Newtonsoft?
Переключатель сериализатора выбирает любой. Он управляет атрибутом, используемым, когда имя свойства отличается от ключа JSON — [JsonPropertyName("key")] для System.Text.Json или [JsonProperty("key")] для Newtonsoft — и соответствующей директивой using.
Могу ли я генерировать записи вместо классов?
Да. Переключатель формы переключается между public class (по умолчанию) и public record, сохраняя те же авто-свойства в PascalCase и атрибуты JSON, так что вы можете выбрать стиль, предпочитаемый в вашей кодовой базе.
Обрабатывается ли JSON приватно?
Да. Всё работает в вашем браузере через JSON.parse и обычный JavaScript; пример никогда не загружается, поэтому вставлять реальные API-нагрузки безопасно.

Больше инструментов