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

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

Barbara Streisand
Barbara Streisand原创
2024-12-27 04:20:21719浏览

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