У цій статті
Навіщо генерувати класи 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-посилань під час компіляції.
Чи слід використовувати List<T> або масиви для масивів JSON?
Генератор за замовчуванням використовує List<T>, оскільки він надає багатшу функціональність (Add, Remove, Contains) і є найпоширенішим типом колекції в кодових базах C#. Ви можете вручну змінити згенерований тип за потреби.
Чи можна генерувати записи замість класів?
Так. Режим record генерує типи записів C# 9+ з init-only властивостями. Записи ідеальні для об'єктів передачі даних, оскільки забезпечують незмінність, рівність на основі значень і лаконічний синтаксис.