Добавьте разные записи
Подходит объект или непустой массив объектов. Все объекты в одной позиции вложенного массива участвуют в общей модели элемента; сравнение примеров выявляет отсутствующие ключи.
Генерация типов
Сравните две записи: отсутствующий ключ и явный null приводят к разным значениям по умолчанию.
Разбор и генерация выполняются в этом браузере. Входные данные не отправляются и не сохраняются.
Примеры массива определяют модель элемента Root. load_models в Pydantic принимает объект или массив.
Классов: 2 · Полей с null: 2
Конвертер JSON в Python создаёт черновик модели по характерным ответам API. Добавьте записи с разными наборами ключей: один полный объект не показывает, какие поля могут отсутствовать.
Выберите dataclass для типизированных контейнеров стандартной библиотеки или модели Pydantic для разбора данных при загрузке. Примеры показывают наблюдаемые типы, но не задают все правила предметной области.
JSON в Python оставляет обязательным поле, которое есть во всех записях, даже если оно допускает null. Если другая запись не содержит ключа, поле получает None по умолчанию. От этого зависит вызов конструктора.
Зарезервированным словам, знакам пунктуации и именам методов нужны безопасные имена атрибутов. Исходное написание сохраняется в метаданных dataclass или псевдонимах Pydantic; конфликты разрешаются предсказуемыми суффиксами.
Подходит объект или непустой массив объектов. Все объекты в одной позиции вложенного массива участвуют в общей модели элемента; сравнение примеров выявляет отсутствующие ключи.
Обычный режим добавляет None только для отсутствовавших ключей. Режим всех необязательных полей разрешает пропуск каждого поля. Даты остаются str, пока не выбран ISO. Decimal применяется к дробным и экспоненциальным числам и содержащим их числовым группам.
Генерация начинается через 350 мс после редактирования. Отключите автоматический режим для кнопки создания или Ctrl/Cmd+Enter. Изменения сразу блокируют экспорт. Очистка и пример сохраняют один снимок ввода, настроек и кода для отмены.
JSON в Python создаёт dataclass только со стандартной библиотекой и размещает обязательные поля раньше полей со значениями по умолчанию. Вывод Pydantic рассчитан на 2.12.5. Дочерние классы объявляются раньше использующих их классов: файл можно импортировать в Python 3.9.
Группы только из целых используют int произвольной точности. При наличии дроби или экспоненты вся группа по умолчанию использует float, включая большие целые, которые могут округлиться. В режиме Decimal такие группы используют Decimal; загрузчик разбирает дроби без промежуточного float даже внутри контейнеров Any.
ISO распознаёт допустимые календарные даты и полные отметки времени с часовым поясом и не более шести знаков долей секунды. Все ненулевые строки в позиции должны иметь один вид даты. Ошибочные даты, время без пояса и более точные строки остаются str. Pydantic преобразует распознанные строки, dataclass — нет.
Поля получают ASCII snake_case. Ключевые слова, начальные подчёркивания, имена model_* и методы BaseModel переименовываются. Пустые ключи, Unicode и управляющие символы сохраняют псевдонимы. Приватные псевдонимы импортов предотвращают конфликты с классами Decimal и BaseModel.
Выберите dataclass, если разбор уже выполняет ваш код и нужен контейнер стандартной библиотеки. JSON в Python также предлагает Pydantic для создания вложенных моделей и проверки входа. Используйте load_models и учитывайте обычное приведение типов и запрет неизвестных полей.
В режиме отсутствующих ключей такое поле получает None по умолчанию и допускающий null тип. Если ключ есть всегда, даже иногда со значением null, поле остаётся обязательным. Режим всех необязательных полей разрешает пропуск независимо от наблюдений.
Конструктор dataclass не преобразует значения по аннотациям. Переданный словарь остаётся словарём, пока вы явно не создадите дочерний экземпляр. Для автоматического построения вложенных моделей выберите Pydantic и вызовите load_models.
Если вся группа содержит только целые токены, используется int произвольной точности. Если в группу попала дробь или экспонента, режим float может округлить и большое целое. Выбирайте Decimal и сгенерированный загрузчик для точного представления такой смешанной группы.
Оставьте псевдонимы включёнными. Атрибут получает безопасное имя, а исходный ключ сохраняется в Field(alias=...) у Pydantic или json_key у dataclass. Метаданные dataclass должен обработать ваш адаптер; при отключённых псевдонимах такой ключ вызывает ошибку.
Нашли случай для улучшения типов?
Используйте JSON в Python с отсутствующими ключами, null и характерными числами, затем проверьте экспортированный код по правилам загрузки вашего приложения.