JSON в класс C#
Вставьте образец JSON и получите готовые классы C# POCO для вставки в файл .cs. Инструмент подбирает подходящие типы, обрабатывает вложенные объекты, добавляя дополнительные определения классов, поддерживает nullable-ссылочные типы и выдаёт атрибуты System.Text.Json или Newtonsoft.Json в зависимости от вашего проекта.
Как преобразовать JSON в C#
-
1
Вставьте JSON
Достаточно одного образца. Несколько образцов улучшают вывод nullable-типов и типов элементов массива.
-
2
Выберите стиль
System.Text.Json (.NET 6+) или Newtonsoft.Json (устаревший). Имена свойств в PascalCase с атрибутом `[JsonPropertyName]` для JSON в формате camelCase.
-
3
Выберите целевую версию C#
C# 10+ для записей и пространств имён на уровне файла, C# 8 для nullable-ссылочных типов или более ранние версии для максимальной совместимости.
-
4
Скопируйте классы
Один корневой класс плюс вложенные классы для каждой формы объекта, всё в одном файле, готовом для добавления в ваш проект.
Пример вывода
Для ввода:
{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }
Вывод System.Text.Json (C# 10+):
public class User
{
[JsonPropertyName("firstName")]
public string FirstName { get; set; } = default!;
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("emails")]
public List<string> Emails { get; set; } = new();
[JsonPropertyName("address")]
public Address Address { get; set; } = default!;
}
public class Address
{
[JsonPropertyName("city")]
public string City { get; set; } = default!;
}
Сопоставление типов
| JSON | Тип C# |
|---|---|
| строка | string |
| целое число | int (или long для значений > int.MaxValue) |
| число (дробное) | double (или decimal, если выбрано) |
| логическое значение | bool |
| null | object? (или объединяется с соседним полем) |
| дата ISO-8601 | DateTime (или DateOnly) |
| строка в формате GUID | Guid |
| массив строк | List<string> |
| объект | Вложенный класс |
Варианты атрибутов
- System.Text.Json (
[JsonPropertyName("foo")]), предпочтителен для .NET 6+ и новых проектов. - Newtonsoft.Json (
[JsonProperty("foo")]), для устаревших проектов или когда нужны специфичные возможности Newtonsoft. - Без атрибутов, имена свойств точно совпадают с ключами JSON (работает только если ключи JSON уже в PascalCase).
Частые ошибки
- Использование
intдля поля, которое может переполниться. Если в вашем JSON есть значения, превышающиеint.MaxValue, используйтеlong. Генератор повышает тип автоматически, когда встречает большие значения. - Отсутствие
[JsonIgnore]для вычисляемых свойств. Если вы добавляете вспомогательные свойства в сгенерированный класс, пометьте их атрибутом[JsonIgnore], иначе они будут сериализованы при выводе. - Забытый разбор, независимый от культуры. Поля
decimalследует десериализовать сCultureInfo.InvariantCulture; System.Text.Json делает это по умолчанию, Newtonsoft, через глобальные настройки. - Доверие генератору по одному образцу. Nullability и типы элементов массива определяются по тому, что генератор видит. Всегда сверяйте nullable-аннотации с реальным поведением вашего API.
Часто задаваемые вопросы
Для новых проектов на .NET 6+ используйте System.Text.Json, он быстрее, встроен и теперь поддерживает почти все возможности Newtonsoft. Newtonsoft используйте для устаревших проектов или когда нужны его специфичные возможности (пользовательские contract resolver, JObject, динамическая обработка).
Записи идиоматичны для неизменяемых DTO в C# 10+. Они дают равенство по значению и лаконичный синтаксис. Классы лучше подходят, когда нужна изменяемость или совместимость со старым кодом. Инструмент позволяет выбрать любой вариант.
Если ваш проект использует nullable-ссылочные типы (C# 8+), поля, где хотя бы в одном образце встретился null, становятся string?, int? и т. д. Без nullable-ссылочных типов допустимость null указывается только для значимых типов (например, int?).
Смешанные массивы из объектов разной формы нельзя напрямую представить в строго типизированном C#. Инструмент выводит общий базовый класс или (в качестве запасного варианта) object; для смешанных массивов обычно лучше пересмотреть структуру JSON.
Сопутствующие инструменты
Справочная таблица ASCII
Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.
Справочник сочетаний клавиш
Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.
Справочник символов HTML
Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.
Шпаргалка по Markdown
Практический справочник Markdown с настоящим предпросмотром и готовыми для копирования примерами заголовков, списков, таблиц, кода, ссылок, изображений и синтаксиса GFM.
Счетчик FPS
Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.
Шпаргалка по регулярным выражениям
Поисковый справочник регулярных выражений для JavaScript, PCRE2/PHP, Python re и .NET. Сравнивайте токены, синтаксис движков, якоря, группы, проверки и флаги.
Инструмент доступен на других языках
- JSON vers classe C# [FR]
- JSON till C#-klass [SV]
- JSON ถึงคลาสใน C# [TH]
- تحويل JSON إلى فئة C# [AR]
- JSON ke Kelas C# [ID]
- Từ JSON đến lớp C# [VI]
- JSON을 C# 클래스로 [KO]
- JSON zu C# Klasse [DE]
- JSON a Clase C# [ES]
- JSON naar C#-klasse [NL]
- JSON na klasę C# [PL]
- JSONからC#クラスへ [JA]
- JSON para Classe C# [PT]
- JSON'ten C# Sınıfına [TR]
- 从 JSON 到 C# 类 [ZH]
- JSON to C# Class [EN]
- JSON in classe C# [IT]