使自定义类可被JSON序列化

11 投票
1 回答
17188 浏览
提问于 2025-04-18 02:50

我有一个自定义的类,叫做 ObjectA(),里面有很多函数、属性等等。我想用 Python 的标准 JSON 库来把这个对象转换成 JSON 格式,我需要实现什么才能让这个对象直接转换成 JSON,而不需要写一个自定义的编码器呢?

谢谢!

1 个回答

12

你可以通过创建一个新的类来扩展 json.JSONEncoder,然后构建一个合适的字典或数组。

想了解更多,可以查看“扩展 JSONEncoder”,在这个链接里。

示例代码如下:

>>> class A:  pass
... 
>>> a = A()
>>> a.foo = "bar"
>>> import json
>>> 
>>> class MyEncoder(json.JSONEncoder):
...    def default(self, obj):
...       if isinstance(obj, A): 
...          return { "foo" : obj.foo }
...       return json.JSONEncoder.default(self, obj)
... 
>>> json.dumps(a, cls=MyEncoder)
'{"foo": "bar"}'

撰写回答