使自定义类可被JSON序列化
我有一个自定义的类,叫做 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"}'