DT Dev Tools

Конвертер JSON в Python — генератор классов

Преобразуйте JSON в dataclasses или модели Pydantic для Python с аннотациями типов, полями snake_case и from_dict/to_dict. Бесплатно, приватно, в вашем браузере.

🔒 Работает полностью в вашем браузере — ничего не загружается

Реклама

От JSON к типизированным классам Python

Работа с сырыми словарями быстра, пока опечатка в имени ключа не вызовет KeyError на третьем уровне вложенности. Этот конвертер JSON в Python генерирует типизированные классы по образцу JSON, чтобы ваш редактор, проверяющий типы инструмент и коллеги точно знали, что содержит каждая полезная нагрузка. Каждый объект становится классом с аннотированными атрибутами, вложенные объекты — собственными классами, списки типизируются по типу элемента, а значения, которые иногда отсутствуют, типизируются как необязательные. Ключи JSON преобразуются в атрибуты в snake_case, тогда как сгенерированный код сериализации сохраняет исходные ключи при передаче данных.

Генерацией занимается quicktype, который объединяет все элементы каждого массива перед выводом типов, так что поле, встречающееся лишь в некоторых элементах, всё равно учитывается и помечается необязательным, а не молча отбрасывается.

Dataclasses, Pydantic и версии Python

По умолчанию вывод использует классы @dataclass из стандартной библиотеки и функции from_dict и to_dict, которые проверяют и преобразуют каждое поле, так что сторонние зависимости не нужны. Если ваш проект уже использует Pydantic — для тел запросов FastAPI, настроек или валидации — отметьте Pydantic BaseModel, и классы будут наследовать BaseModel. Переключатель версии Python управляет синтаксисом типов: 3.10+ даёт современные аннотации list[int] и str | None, тогда как более старые версии откатываются к модулю typing. Отметьте Classes only, чтобы полностью пропустить вспомогательные функции преобразования.

Практические советы

Используйте образец, охватывающий необязательные поля и содержащий несколько элементов массива, ведь вывод типов может описать лишь то, что видит. Назовите корневой класс по вашей предметной области — Invoice читается лучше, чем Root — и скачанный файл получит это имя. После генерации запустите форматтер и проверку типов (Black, Ruff, mypy или Pyright) и уточните всё, что образец не мог показать, например строки, которые на самом деле являются enum, или числа, которые должны быть Decimal. Весь разбор и генерация кода происходят локально, так что вы можете безопасно вставлять ответы с данными клиентов.

Как использовать

  1. Вставьте JSONВставьте объект или массив JSON либо нажмите Load sample.
  2. Выберите стильВыберите версию Python и то, нужны ли вам dataclasses или модели Pydantic.
  3. Скопируйте классыСкопируйте сгенерированный код или скачайте его как модуль .py.

Часто задаваемые вопросы

Генерирует ли он dataclasses или модели Pydantic?
И то, и другое. По умолчанию вывод использует @dataclass с аннотациями типов; отметьте Pydantic BaseModel, чтобы вместо этого получить модели Pydantic.
Какие версии Python поддерживаются?
Выберите 3.6, 3.7, 3.9 или 3.10+. Более новые цели используют встроенные обобщения вроде list[str] и синтаксис объединения X | None.
Преобразуются ли имена свойств в snake_case?
Да. Имена полей становятся pythonic snake_case, тогда как сгенерированные функции from_dict и to_dict сохраняют исходные ключи JSON.
Загружаются ли мои данные?
Нет. Всё выполняется локально в вашем браузере, так что приватные ответы API остаются на вашем устройстве.
Реклама