首页 > 后端开发 > Python教程 > 如何使自定义 Python 类 JSON 可序列化?

如何使自定义 Python 类 JSON 可序列化?

DDD
发布: 2024-12-27 00:31:10
原创
516 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板