首頁 > 後端開發 > Python教學 > 如何讓自訂 Python 類別 JSON 可序列化?

如何讓自訂 Python 類別 JSON 可序列化?

DDD
發布: 2024-12-27 00:31:10
原創
517 人瀏覽過

How Can I Make Custom Python Classes JSON Serializable?

使自訂Python 類別可序列化為JSON

嘗試使用json.dumps() 函數將自訂Python 類別序列化為JSON 時,出現錯誤可能會因為Python的預設行為本身不支援自訂序列化而發生

自訂序列化方法:.toJSON()

解決此問題的一種方法是在實現以下內容的類別中建立自訂.toJSON() 方法序列化邏輯。此方法透過迭代物件的屬性並產生 JSON 字串,將物件轉換為 JSON 可序列化字典。以下是一個範例:

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

    def toJSON(self):
        return json.dumps({"filename": self.fname})
登入後複製

透過呼叫.toJSON() 方法,您可以將自訂物件序列化為JSON 字串:

x = FileItem('/foo/bar')
json_string = x.toJSON()
登入後複製

orjson 函式庫

為了更全面、更有效率的方法,建議使用第三方函式庫,例如orjson。 Orjson 是 Python 的 C 擴展,提供極快的 JSON 序列化和反序列化。使用 orjson,您可以透過定義元類別來啟用自訂物件序列化:

import orjson

class JsonSerializableMeta(type):
    def __orjson__(cls):
        return cls.__dict__

class FileItem(metaclass=JsonSerializableMeta):
    def __init__(self, fname):
        self.fname = fname
登入後複製

此元類別重寫 __orjson__ 方法以將物件的屬性作為字典返回,從而啟用序列化為 JSON。

以上是如何讓自訂 Python 類別 JSON 可序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板