Для разработчиков / Типы

Конвертер JSON в Python

Преобразуйте пример JSON в dataclasses, определения TypedDict или модели Pydantic с вложенными классами, необязательными и допускающими null полями и именами в snake_case.

Конвертер JSON в Python: Конвертер анализирует структуру примера: каждый объект становится классом, массивы — list[...], а объекты в массиве объединяются. Поэтому ключ, отсутствующий в некоторых объектах, становится необязательным, а ключ, значением которого иногда бывает null, получает тип "| None". Ключи, недопустимые в именах Python, преобразуются в snake_case; модели Pydantic сохраняют исходный ключ как alias, а TypedDict переходит в функциональную форму. Результат для нескольких сложных примеров был проверен в Python 3.13, а Pydantic использовался для валидации примера. Работает на 100% локально в вашем браузере, файлы на сервер не загружаются.

Запуски
В вашем браузере
Стоимость
Бесплатно · без регистрации
Доступность
Готово к использованию
JSON в PythonЛокальная обработка

Полностью работает в браузере

Python

from __future__ import annotations

from dataclasses import dataclass


@dataclass
class Address:
    city: str
    zip_code: str


@dataclass
class User:
    id: int
    user_name: str
    avatar_url: str
    score: float
    tags: list[str]
    address: Address
    manager_id: int | None
    nickname: str | None = None


UserList = list[User]

Код предназначен для Python 3.10 или более поздней версии. Ключи, отсутствующие в некоторых объектах, становятся необязательными; ключи, значения которых иногда равны null, получают “| None”. Dataclasses не сопоставляют переименованные ключи обратно с JSON, поэтому для ключей, недопустимых в именах Python, используйте Pydantic, который добавляет псевдонимы.

От типов к проверке

Одних аннотаций типов недостаточно для проверки данных во время выполнения: json.loads возвращает обычные словари и списки независимо от указанных аннотаций. Модели Pydantic проверяют и преобразуют данные при разборе с помощью Model.model_validate(data), сообщая обо всех полях, которые не соответствуют требованиям.

Тот же пример на других языках смотрите в инструментах JSON в TypeScript и JSON в Go; для контракта, не зависящего от языка, используйте JSON в JSON Schema.

Как получить хороший пример

Вставьте несколько записей, а не одну, включая записи с необязательными или пустыми полями, чтобы конвертер мог определить, какие ключи присутствуют всегда. Значения, которые всегда равны null или являются пустыми массивами, преобразуются в Any — их нужно заполнить вручную.

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

  1. Вставьте пример JSON, желательно массив с несколькими типичными объектами.
  2. Выберите dataclasses, TypedDict или Pydantic и задайте имя типа верхнего уровня.
  3. Скопируйте сгенерированные классы в свой проект.

Конфиденциальность и ограничения

JSON преобразуется в вашем браузере и никогда не загружается на сервер.

Похожие инструменты

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

Какой стиль выбрать?

Pydantic — для проверки и разбора данных из API, TypedDict — для статической проверки кода, который передаёт обычные dict, а dataclasses — для простых внутренних объектов, которые вы создаёте самостоятельно.

Какая версия Python нужна для этого кода?

Python 3.10 или новее — для синтаксиса X | None; для NotRequired в TypedDict нужна версия 3.11 или пакет typing_extensions в более старых версиях.

Почему некоторые поля имеют тип Any?

Ключ, значением которого всегда является null, или пустой массив не дают информации о типе; замените Any на фактический тип из документации вашего API.

Бесплатный инструмент · запусков: в вашем браузере · аккаунт не нужен