«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу сделать мои классы Python сериализуемыми в формате JSON?

Как я могу сделать мои классы Python сериализуемыми в формате JSON?

Опубликовано 21 декабря 2024 г.
Просматривать:596

How Can I Make My Python Classes JSON Serializable?

Создание сериализуемых классов Python в формате JSON

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

Реализация метода toJSON()

Один из подходов — создать toJSON() для класса, который вручную обрабатывает его сериализацию. Для этого требуется реализовать специальную функцию сериализации JSON и обеспечить правильную обработку вложенных объектов.

import json

class FileItem:
    def __init__(self, fname):
        self.fname = fname

    def toJSON(self):
        return json.dumps(self.__dict__)

x = FileItem('/foo/bar')
print(x.toJSON())  # Outputs: '{"fname": "/foo/bar"}'

Использование библиотеки orjson

Для всестороннего Решение, рассмотрите возможность использования библиотеки orjson, которая обеспечивает эффективный и настраиваемый способ сериализации пользовательских классов в JSON. Он предлагает расширенные функции, такие как применение схемы и поддержка сложных структур объектов.

import orjson

@orjson.dataclass
class FileItem:
    fname: str

x = FileItem('/foo/bar')
json_bytes = orjson.dumps(x)  # Returns a byte string
print(json_bytes.decode())  # Outputs: '{"fname": "/foo/bar"}'

Заключение

Использование пользовательского toJSON() или библиотека orjson предоставляют удобные решения для сериализации классов Python в JSON. Оба подхода гарантируют, что объекты могут быть эффективно представлены и переданы в формате JSON.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3