Превратите пример JSON в dataclass, модели Pydantic или TypedDict на Python с аннотациями типов
Работает в вашем браузере. Ничего из того, что вы вводите, никуда не отправляется. Проверено 16 октября 2026 г..Вставьте пример JSON и получите dataclass, модели Pydantic v2 или TypedDict на Python с аннотациями типов. Целые числа становятся int, а любая дробь делает поле float; значение null или отсутствующее становится str | None со значением по умолчанию None, и все 3 стиля классов используют один и тот же вывод типов.
Эта страница переведена машинным способом с английского оригинала. Перевод ещё не проверен человеком, поэтому ориентируйтесь на английскую версию. Читать английский оригинал
Вставьте пример JSON, например ответ API, в левое поле.
Классы Python появляются по мере ввода: один класс на объект, с аннотациями вроде int, float, list[str] и str | None.
Выберите dataclass, Pydantic или TypedDict и типизацию Python 3.9, если ваш проект старше 3.10.
Нажмите «Копировать» или «Скачать», чтобы сохранить models.py.
Python читает JSON как словари, и только класс с аннотациями типов позволяет редактору, проверщику типов или Pydantic заметить опечатку в ключе или неверный тип. Этот конвертер пишет такие классы по примеру, так что длинный ответ API превращается в типизированный Python за одну вставку.
Как выбираются типы.
| Значение JSON | Тип Python |
|---|---|
| "text" | str |
| true / false | bool |
| 42 (только целые числа) | int |
| 4.5 (встретилась любая дробь) | float |
| null и ещё какой-то тип | str | None или Optional[str] |
| только null или смешанные виды | Any |
| [ ... ] | list[...] |
| { } пустой | dict[str, Any] |
| { ... } | отдельный класс |
Массивы объектов. Все объекты массива сливаются в один класс, поэтому ключ, который есть только в некоторых из них, всё равно присутствует, с типом, допускающим None, и None по умолчанию. Два объекта с точно одинаковыми ключами и типами используют один класс.
Три стиля. Dataclass не требует установки; поля со значением по умолчанию ставятся после остальных, иначе Python выбрасывает TypeError. Модели Pydantic используют атрибуты в snake_case с Field(alias=...) для ключей, записанных иначе, например userName или first-name. TypedDict сохраняет ключи в точности и помечает NotRequired те, что встречаются не всегда.
Порядок и имена. Классы пишутся начиная с дочерних, так что каждое имя определено до использования. Ключевое слово вроде class становится class_, а ключ, который скрыл бы тип, например list, получает такое же подчёркивание.
Каждый стиль проверен запуском результата в CPython с Pydantic 2 и валидацией примера. Ничто из вставленного не покидает браузер.
Вставьте пример JSON в конвертер, и рядом появятся классы Python, по одному на объект, с аннотацией типа у каждого атрибута. Выберите dataclass для простых классов, Pydantic для валидации или TypedDict, чтобы и дальше работать с обычными словарями, и скопируйте модуль в свой проект.
Dataclass подходит для данных, которые вы создаёте сами, и не требует библиотек. Pydantic подходит для внешних данных, например ответов API, потому что проверяет каждое значение и сам преобразует вложенные объекты. TypedDict лишь добавляет аннотации типов к словарю, который возвращает json.loads, поэтому ничего не стоит во время выполнения.
Атрибуты Pydantic пишутся в snake_case, как требует PEP 8, с Field(alias="userName"), чтобы валидация по-прежнему читала исходный ключ. TypedDict сохраняет каждый ключ в точности и переходит на функциональный синтаксис, когда ключ не является допустимым именем. Dataclass сохраняет ключи с допустимыми именами и отмечает остальные.
Ключ, который в примере был null или отсутствует в некоторых объектах массива, может содержать None, поэтому аннотация это допускает. Отсутствующие ключи также получают None по умолчанию, а в dataclass такие поля переносятся в конец, потому что Python не принимает поле без значения по умолчанию после поля со значением.
Типизация по умолчанию, например list[str] и str | None, требует Python 3.10 или новее. Включите типизацию Python 3.9, чтобы получить вместо этого Optional и List из модуля typing. NotRequired для TypedDict берётся из typing_extensions, а начиная с Python 3.11 есть в самом typing.
Нет. Преобразование выполняется в вашем браузере без запросов к серверу, и JSON не сохраняется, так что ответы API с токенами или личными данными остаются на вашем устройстве. Закройте вкладку, и ничего не останется.
Ставки и правила меняются; проверьте источник, прежде чем полагаться на цифру.
Всё ещё не получается? Задайте вопрос об инструменте «Конвертер JSON в классы Python» и ответить может любой, кто знает. Учётная запись не нужна.