我需要知道如何将动态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 ...
使用python 2.6的以下代码:
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
我不知道用户可能放入哪种子对象c。是否有足够聪明的解决方案来检测属性是否是对象并__dict__自动对其进行解析?
c
__dict__
更新 为在上包含子对象c。
指定default=参数(doc):
default=
json.dumps(c, default=lambda o: o.__dict__)