Python·100 вопросов

Как сериализовать dataclass в dict/JSON?

Ответ

Для того чтобы сериализовать стандартный dataclass в словарь или формат JSON, в языке Python предусмотрены встроенные инструменты. Процесс состоит из нескольких логических шагов, которые позволяют преобразовать объект в удобный для передачи или сохранения вид.

Для перевода объекта класса данных в обычный словарь используется функция asdict из модуля dataclasses. Эта функция автоматически обрабатывает вложенные структуры данных, рекурсивно преобразуя все дочерние датаклассы и коллекции в соответствующие словари и списки.

Импортируйте функции asdict из модуля dataclasses и json для работы с форматом.
Примените asdict к вашему объекту, чтобы получить стандартный словарь python.
Сериализуйте полученный словарь в строку JSON с помощью функции json.dumps.

При работе с полями типов datetime или UUID стандартная функция сериализации выдаст ошибку, так как они не поддерживаются "из коробки". В таких случаях перед вызовом json.dumps необходимо вручную преобразовать объекты даты и времени в строковый формат, например, через метод isoformat.

Если вам требуется строгий контроль над форматом сериализации, валидация полей или сложная кастомизация выходных данных, лучше использовать pydantic или написать собственный метод сериализации. Это избавит вас от ограничений стандартных датаклассов при работе с нестандартными типами данных.

Полезен ли этот ответ?

Другие вопросы этой темы

Связанные вопросы из других тем