使自定义 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中文网其他相关文章!