Для разработчиков / Типы
Конвертер 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% локально в вашем браузере, файлы на сервер не загружаются.
- Категория
- Инструменты для разработчиков
- Запуски
- В вашем браузере
- Стоимость
- Бесплатно · без регистрации
- Доступность
- Готово к использованию
Полностью работает в браузере
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 — их нужно заполнить вручную.
Как пользоваться
- Вставьте пример JSON, желательно массив с несколькими типичными объектами.
- Выберите dataclasses, TypedDict или Pydantic и задайте имя типа верхнего уровня.
- Скопируйте сгенерированные классы в свой проект.
Конфиденциальность и ограничения
JSON преобразуется в вашем браузере и никогда не загружается на сервер.
Похожие инструменты
Часто задаваемые вопросы
Какой стиль выбрать?
Pydantic — для проверки и разбора данных из API, TypedDict — для статической проверки кода, который передаёт обычные dict, а dataclasses — для простых внутренних объектов, которые вы создаёте самостоятельно.
Какая версия Python нужна для этого кода?
Python 3.10 или новее — для синтаксиса X | None; для NotRequired в TypedDict нужна версия 3.11 или пакет typing_extensions в более старых версиях.
Почему некоторые поля имеют тип Any?
Ключ, значением которого всегда является null, или пустой массив не дают информации о типе; замените Any на фактический тип из документации вашего API.
Бесплатный инструмент · запусков: в вашем браузере · аккаунт не нужен