UTILS.
100% у браузері
🐍

JSON у модель Pydantic

Перетворіть зразок JSON на класи моделей Python Pydantic v2 з перемикачами для виводу @dataclass чи TypedDict і псевдонімами полів у snake_case.

результат

Про цей інструмент

Інструмент JSON у модель Pydantic перетворює вставлений зразок JSON на класи моделей Python. Розробники на Python та FastAPI постійно створюють моделі Pydantic зі зразків відповідей API, і цей конвертер робить це миттєво у браузері. Він розбирає ваш JSON, рекурсивно визначає типи Python і видає один клас на об'єкт: рядки стають str, рядки дати-часу ISO — datetime, рядки лише з датою — date, цілі числа — int, інші числа — float, булеві — bool, масиви — List[T], а вкладені об'єкти — власними класами моделей, названими в PascalCase.

Увесь розбір і генерація відбуваються локально за допомогою JSON.parse і звичайного JavaScript, тож ніщо зі вставленого не залишає вашу машину. Дочірні класи видаються перед класами, що на них посилаються (топологічний порядок), а заголовок імпортує лише те, що справді використовується — BaseModel і Field з pydantic, Optional / List / Union / Any з typing, а також datetime / date, коли доречно. from __future__ import annotations завжди включено, тож попередні посилання працюють незалежно від порядку.

Ключі, відсутні в деяких сусідніх об'єктах або побачені як null, стають Optional[T] = None. Перемикач режиму виводу перемикає між Pydantic v2 BaseModel (за замовчуванням), стандартним @dataclass і typing.TypedDict. Увімкніть поля snake_case, щоб перейменувати ключі camelCase чи некоректні ключі й автоматично додати Field(alias="originalKey"), щоб модель усе одно розбирала оригінальний JSON. Скопіюйте код або завантажте його як файл .py.

Поширені запитання

Які типи Python визначаються?
string у str, дата-час ISO у datetime, лише дата у date, ціле у int, нецілі числа у float, булеве у bool, масив у List[T] з T, об'єднаним з елементів, а об'єкт у вкладений клас BaseModel. Null або відсутні значення стають Optional[T] = None.
Чи можу я отримати dataclass або TypedDict замість цього?
Так. Перемикач режиму виводу видає Pydantic v2 BaseModel (за замовчуванням), стандартний @dataclass з імпортом dataclasses або клас typing.TypedDict. Визначення типів однакове; змінюються лише оболонка класу та імпорти.
Як обробляються ключі, що не є ідентифікаторами, або в camelCase?
З увімкненими полями snake_case ключ на кшталт userName стає user_name плюс Field(alias="userName"), тож він усе одно коректно перетворюється. Ключі, що є ключовими словами Python чи некоректними ідентифікаторами, завжди отримують псевдонім, щоб згенерований код був коректним.
Чи правильно впорядковані класи?
Так. Вкладені дочірні класи оголошуються перед батьківськими класами, що їх використовують, і включено from __future__ import annotations, тож моделі компілюються без помилок попередніх посилань.

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