使自訂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中文網其他相關文章!