ДокументыИзображенияМедиаИнструменты PDF

JSON в C# Class

Генерируйте C#-классы из JSON прямо в браузере.

Processed in your browser

JSON в C#-классы, готовые для .NET

Совместим с современным .NET

Сгенерированные классы работают с System.Text.Json (.NET 5+) и Newtonsoft.Json. Готово для ASP.NET Core и .NET MAUI.

100% приватно

Ваш JSON обрабатывается в браузере. Никогда не отправляется на внешние серверы. Безопасно для конфиденциальных API.

Идиоматичный C#-код

Автосвойства, PascalCase, корректные nullable-типы. Код соответствует официальным соглашениям Microsoft.

Мгновенно

Генерация классов за миллисекунды. Никаких установок, регистрации и ожидания.

Три шага — никаких сложностей

1

Вставьте ваш JSON

Вставьте любой допустимый JSON-объект. Парсер определяет типы, необязательные поля и вложенные структуры.

2

Сгенерируйте C#-классы

Генерируются C#-классы с автосвойствами, nullable-типами для необязательных полей и вложенными классами.

3

Скопируйте и используйте в проекте

Скопируйте сгенерированный код в Visual Studio или VS Code. Совместимо с System.Text.Json и Newtonsoft.Json без каких-либо изменений.

Остались вопросы?

Автосвойства ({ get; set; }) — функция C#, позволяющая объявлять свойства без ручного написания backing-поля. Вместо объявления приватного поля и его явных аксессоров достаточно написать public string Name { get; set; }, и компилятор автоматически генерирует backing-поле. Это делает код более лаконичным и читабельным.

Соглашения об именовании .NET (задокументированные в руководствах Microsoft) определяют, что публичные свойства должны использовать PascalCase (PropertyName), в отличие от Java с его camelCase. Тем не менее System.Text.Json и Newtonsoft.Json могут автоматически сопоставлять PascalCase в C# и camelCase в JSON с помощью JsonPropertyName или конфигурации сериализации.

Когда поле присутствует в некоторых JSON-объектах, но не во всех, оно определяется как необязательное и генерируется с nullable-типом (string?, int?, bool?). Для этого требуется C# 8.0 или выше с включённым nullable-контекстом. Nullable-типы предотвращают NullReferenceException при обращении к полям, которые могут отсутствовать в JSON-ответе.

Вложенные JSON-объекты преобразуются в отдельные C#-классы в одном файле. Каждый вложенный класс генерируется как обычный публичный класс (не внутренний), следуя соглашению C# об одной ответственности на класс. Ссылки между классами устанавливаются через тип свойства.

System.Text.Json входит в .NET Core 3.0+ и является рекомендуемым вариантом для новых проектов: он быстрее и требует меньше памяти. Newtonsoft.Json (Json.NET) имеет больше возможностей и гибкости, предпочтителен при необходимости сложных пользовательских конвертеров или совместимости со старыми проектами. Классы, сгенерированные данным инструментом, совместимы с обеими библиотеками без каких-либо изменений.

C#-классы, record-типы, сериализация JSON в .NET и разработка с ASP.NET Core

C# — основной язык экосистемы .NET от Microsoft, широко используемый для веб-API с ASP.NET Core, десктопных приложений на WPF/WinForms и кроссплатформенных приложений с .NET MAUI. При разработке REST API с ASP.NET Core модели данных (также называемые DTO или view-моделями) — это C#-классы, представляющие тела JSON-запросов и ответов.

С C# 9.0 и .NET 5+ Microsoft представила record-типы: неизменяемые классы с равенством по значению, идеальные для DTO. В отличие от обычных классов, record-типы по умолчанию неизменяемы и требуют меньше шаблонного кода. Однако для сценариев, где объекты должны быть изменяемыми (например, при десериализации из JSON), классы с автосвойствами остаются стандартным выбором.

System.Text.Json, представленный в .NET Core 3.0, заменил Newtonsoft.Json в качестве рекомендуемой библиотеки сериализации. Он значительно быстрее и требует меньше памяти, что важно для высокопроизводительных API. В бенчмарках System.Text.Json превосходит Newtonsoft по скорости сериализации и десериализации. Convertir.ai генерирует классы, совместимые с обеими библиотеками, обрабатывая всё в вашем браузере без отправки данных на серверы.