JSON в Python Dataclass
Генерируйте Python-датаклассы с аннотациями типов из JSON. Бесплатно, в браузере.
Для чего это нужно
JSON в Python-датакласс с аннотациями типов
Совместим с Python 3.7+
Сгенерированный код использует модуль dataclasses из стандартной библиотеки. Без внешних зависимостей — работает в любой современной среде Python.
100% приватно
Ваш JSON обрабатывается в браузере. Никогда не отправляется на серверы. Безопасно для внутренних API или конфиденциальных моделей данных.
Точные аннотации типов
Точное определение типов: str, int, float, bool, List, Optional и вложенные датаклассы с подходящими именами и типами.
Мгновенно
Генерация в реальном времени по мере ввода или вставки JSON. Никаких задержек и серверных вызовов.
Как это работает
Три шага — никаких сложностей
Вставьте ваш JSON
Введите JSON, который нужно преобразовать. Это может быть ответ API, конфигурационный файл или любая допустимая JSON-структура.
Получите Python-датакласс
Инструмент генерирует Python-класс с декоратором @dataclass и выведенными аннотациями типов (str, int, float, bool, list, вложенный датакласс) для каждого поля.
Скопируйте и импортируйте в проект
Скопируйте сгенерированный код в ваш Python-модуль. Потребуется только импорт dataclass из стандартной библиотеки dataclasses.
FAQ
Остались вопросы?
Датаклассы — классы Python, предназначенные главным образом для хранения данных, введённые в Python 3.7 через PEP 557. Декоратор @dataclass автоматически генерирует методы __init__, __repr__ и __eq__ на основе полей, объявленных с аннотациями типов. Это современная альтернатива ручному определению классов с повторяющимися методами __init__: код становится чище и читабельнее без внешних зависимостей вроде Pydantic.
Python dict не имеет определённых типов, принимает любые ключи и значения и не даёт автодополнения в IDE. Датакласс явно определяет структуру с аннотациями типов, обеспечивает доступ к полям через точечную нотацию (`obj.field` вместо `obj['field']`), автоматически генерирует методы сравнения и представления, а IDE и инструменты статического анализа (mypy, Pyright) могут обнаруживать ошибки типов ещё до запуска кода.
Инструмент анализирует значения JSON для определения наиболее подходящего типа Python: текстовые строки → `str`, целые числа → `int`, десятичные числа → `float`, булевы значения → `bool`, массивы → `List[T]`, где T — выведенный тип элементов, вложенные объекты → отдельные датаклассы. Значения null превращаются в `Optional[T]` со значением по умолчанию `None`.
Да. Когда JSON содержит объекты внутри объектов, инструмент генерирует отдельный датакласс для каждого уровня вложенности. Классы корректно упорядочены в коде: каждый датакласс определяется до того, как на него ссылаются. Например, `{"user": {"name": "Alice", "age": 30}}` генерирует датакласс `User` и родительский датакласс, содержащий его.
Поля с null-значениями в образце JSON генерируются как `Optional[T] = None` в датаклассе. Это сигнализирует, что поле может отсутствовать или быть None во время выполнения. Для использования Optional нужно импортировать его из `typing` (Python < 3.10) или использовать синтаксис `T | None` (Python 3.10+). Инструмент генерирует код, совместимый с Python 3.7+.
Эволюция аннотаций типов Python: от PEP 484 до датаклассов, сравнение с Pydantic
Аннотации типов в Python были введены в PEP 484 в Python 3.5 (2015). До этого Python был динамически типизированным, и инструменты статического анализа не могли проверять типы. PEP 526 (Python 3.6) добавил аннотации переменных, а PEP 557 (Python 3.7) ввёл датаклассы, использующие аннотации типов как объявления полей. Эта эволюция превратила Python в язык, сочетающий динамическое поведение со статической проверкой типов.
Модуль стандартной библиотеки dataclasses автоматически генерирует __init__, __repr__ и __eq__. Для более продвинутых задач — валидации данных, автоматической сериализации/десериализации и совместимости с JSON Schema — наиболее популярной альтернативой является Pydantic (v1 и v2). FastAPI использует Pydantic для автоматической валидации тел HTTP-запросов. Однако для большинства задач внутреннего моделирования данных стандартных датаклассов вполне достаточно без внешних зависимостей.
Переход с Python 2 на 3 и широкое внедрение аннотаций типов изменили экосистему. Инструменты mypy (Dropbox), Pyright (Microsoft) и Pylance (VS Code) выполняют статический анализ типов. В крупных проектах аннотации типов значительно сокращают количество связанных с типами ошибок в продакшене. Генерация датаклассов из JSON внешних API или схем баз данных — распространённая практика для поддержания удобочитаемого и верифицируемого кода на Python.