JSON у Python dataclass
Перетворіть приклад JSON у типізовані класи Python — dataclass, Pydantic, TypedDict або NamedTuple.
JSON у Python dataclass
Вставте об'єкт JSON або масив, і цей інструмент автоматично визначить тип для кожного поля та згенерує відповідні класи Python з повними анотаціями типів. Виберіть стиль виводу, який відповідає вашій кодовій базі: простий @dataclass, Pydantic BaseModel для валідації запитів та відповідей, TypedDict для анотування існуючого словникового коду, або NamedTuple для легких незмінюваних записів. Вкладені об'єкти стають власними класами, визначеними в правильному порядку, тому файл відразу працює; об'єкти з однаковою формою — як кожен елемент у масиві записів — повторно використовують один клас замість створення дублікату для кожного.
Опції керують тим, консервативний чи сучасний сгенерований код. Опція «Optional для нульових полів» перетворює поле, яке було null у вашому зразку, на тип Optional (або Any) замість безкорисного голого None; «Додати значення за замовчуванням» доповнює це за допомогою «= None», щоб поле можна було пропустити при створенні екземпляра, а обов'язкові поля автоматично переупорядковуються перед полями зі значеннями за замовчуванням, де це вимагає синтаксис Python. Опція «Псевдонім для неправильних імен полів» обробляє ключі JSON, які не є дійсними ідентифікаторами Python — ключ з дефісом, як-от «first-name», стає атрибутом first_name, пов'язаним назад з вихідним ключем через метадані поля в dataclass або Field(alias=...) у Pydantic, щоб серіалізація працювала правильно. Опція «Використовувати list[T] замість List[T]» перемикається між сучасними вбудованими узагальненнями PEP 585 та старішим стилем typing.List, який деякі проекти все ще потребують, а перемикач анотацій майбутнього змінює Optional[X]/Union[X, Y] на новіший синтаксис X | None / X | Y в усьому коді.
Виведення типів розрізняє рядки, цілі числа, числа з плаваючою точкою та логічні значення, об'єднує змішаний вміст масиву в один тип Union і надає масиву кореневих об'єктів розумне ім'я класу RootItem з псевдонімом Root = list[RootItem] нижче. Оскільки число JSON не несе власний маркер int/float, число без десяткової точки завжди читається як int — немає способу відновити передбачуване «36.0» після аналізу.
Усе виконується локально у вашому браузері: JSON, який ви вставляєте, часто справжня відповідь API або запис з бази даних, аналізується та перетворюється без відправлення куди-либудь. Скопіюйте згенерований Python, завантажте його як файл .txt або відправте результат назад на вхід, щоб продовжити його удосконалення.