JSON в Python dataclass
Преобразуйте JSON пример в типизированные классы Python — dataclass, Pydantic, TypedDict или NamedTuple.
JSON в Python dataclass
Вставьте JSON объект или массив, и этот инструмент автоматически определит тип для каждого поля и сгенерирует соответствующие классы Python с полными аннотациями типов. Выберите стиль вывода, который соответствует вашей кодовой базе: простой @dataclass, Pydantic BaseModel для валидации запросов и ответов, TypedDict для аннотации существующего словарного кода, или NamedTuple для легких неизменяемых записей. Вложенные объекты становятся собственными классами, определенными в правильном порядке, поэтому файл сразу работает; объекты с одинаковой формой — как каждый элемент в массиве записей — повторно используют один класс вместо создания дубликата для каждого.
Опции управляют тем, консервативен ли сгенерированный код или современен. Опция «Optional для пустых полей» преобразует поле, которое было null в вашем образце, в тип Optional (или Any) вместо бесполезного голого None; «Добавить значения по умолчанию» дополняет это с помощью «= None», чтобы поле можно было пропустить при создании экземпляра, а обязательные поля автоматически переупорядочиваются перед полями со значениями по умолчанию, где это требует синтаксис Python. Опция «Псевдоним для неправильных имён полей» обрабатывает ключи JSON, которые не являются допустимыми идентификаторами Python — ключ с дефисом, такой как «first-name», становится атрибутом first_name, связанным обратно с исходным ключом через метаданные поля в dataclass или Field(alias=...) в Pydantic, чтобы сериализация работала правильно. Опция «Использовать list[T] вместо List[T]» переключается между современными встроенными обобщениями PEP 585 и старым стилем typing.List, который некоторые проекты все еще требуют, а переключатель аннотаций будущего изменяет Optional[X]/Union[X, Y] на новый синтаксис X | None / X | Y во всем коде.
Вывод типов различает строки, целые числа, числа с плавающей запятой и логические значения, объединяет смешанное содержимое массива в один тип Union и дает массиву корневых объектов разумное имя класса RootItem с псевдонимом Root = list[RootItem] ниже. Поскольку число JSON не несет собственный маркер int/float, число без десятичной точки всегда читается как int — нет способа восстановить предполагаемое «36.0» после анализа.
Все выполняется локально в вашем браузере: JSON, который вы вставляете, часто реальный ответ API или запись из базы данных, анализируется и преобразуется без отправки где-либо. Скопируйте сгенерированный Python, загрузите его как файл .txt или отправьте вывод обратно на вход, чтобы продолжить его совершенствование.