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

如何将自定义 Python 类序列化为 JSON?

Barbara Streisand
发布: 2024-12-27 04:20:21
原创
775 人浏览过

How Can I Serialize Custom Python Classes to JSON?

将自定义 Python 类序列化为 JSON

问题

Python 类本身无法序列化为 JSON。考虑以下类:

class FileItem:
    def __init__(self, fname):
        self.fname = fname
登录后复制

该类无法直接序列化为 JSON:

>>> import json
>>> x = FileItem('/foo/bar')
>>> json.dumps(x)
TypeError: Object of type 'FileItem' is not JSON serializable
登录后复制

解决方案

要解决此问题,一种方法是实现序列化方法:

toJSON()方法

import json

class Object:
    def toJSON(self):
        return json.dumps(
            self,
            default=lambda o: o.__dict__, 
            sort_keys=True,
            indent=4)
登录后复制

使用此方法,您可以序列化类:

me = Object()
me.name = "Onur"
me.age = 35
me.dog = Object()
me.dog.name = "Apollo"

print(me.toJSON())
登录后复制

这将输出以下 JSON:

{
    "age": 35,
    "dog": {
        "name": "Apollo"
    },
    "name": "Onur"
}
登录后复制

附加库

要获得更全面的解决方案,您可以使用orjson 库。

以上是如何将自定义 Python 类序列化为 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板