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 (по умолчанию), stdlib @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 (по умолчанию), stdlib @dataclass с импортом dataclasses или класс typing.TypedDict. Вывод типов одинаков; меняются только оболочка класса и импорты.
Как обрабатываются ключи-неидентификаторы или camelCase?
При включённых полях snake_case ключ вроде userName становится user_name плюс Field(alias="userName"), чтобы он всё ещё корректно преобразовывался. Ключи, являющиеся ключевыми словами Python или недопустимыми идентификаторами, всегда получают алиас, чтобы сгенерированный код был валидным.
Правильно ли упорядочены классы?
Да. Вложенные дочерние классы объявляются раньше родительских классов, которые их используют, и включается from __future__ import annotations, так что модели компилируются без ошибок предварительных ссылок.

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