将动态Python对象转换为JSON
我想知道怎么把一个动态的 Python 对象转换成 JSON 格式。这个对象可以有多个层级的子对象。例如:
class C(): pass
class D(): pass
c = C()
c.dynProperty1 = "something"
c.dynProperty2 = { 1, 3, 5, 7, 9 }
c.d = D()
c.d.dynProperty3 = "d.something"
# ... convert c to json ...
我试过这段代码:
import json
class C(): pass
class D(): pass
c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"
json.dumps(c.__dict__)
但是我遇到了一个错误,提示说 TypeError: <__main__.D instance at 0x99237ec> is not JSON serializable
。
我该怎么做才能让任何子对象(如果它们是类的话)自动使用它们的 __dict__
来进行序列化呢?
4 个回答
9
试试这个包 python-jsonpickle
这是一个Python库,可以把任何复杂的对象转换成JSON格式。简单来说,它可以把几乎所有的Python对象变成JSON,然后还可以把这些JSON再转换回Python对象。
16
json.dumps(c.__dict__)
这样做会给你一个通用的JSON对象,如果你想要的是这个的话。
144
指定 default=
参数 (文档):
json.dumps(c, default=lambda o: o.__dict__)