将dynamicPython对象转换为JSON

可能重复:
Python可序列化的对象json

我需要知道如何将一个dynamic的python对象转换成JSON。 该对象必须能够具有多个级别对象的子对象。 例如:

class C(): pass class D(): pass c = C() c.dynProperty1 = "something" c.dynProperty2 = { 1, 3, 5, 7, 9 } cd = D() cddynProperty3 = "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?" cd = D() cdwhat = "d.what" json.dumps(c.__dict__) 

产生以下错误:

 TypeError: <__main__.D instance at 0x99237ec> is not JSON serializable 

我不知道用户可能把什么types的子对象放入c 。 有没有一个解决scheme足够聪明,可以检测一个属性是否是一个对象,并自动parsing__dict__

已更新 ,包括子对象上c

指定default=参数( doc )

 json.dumps(c, default=lambda o: o.__dict__) 
 json.dumps(c.__dict__) 

这会给你一个通用的JSON对象,如果这就是你要做的。

尝试使用这个包python-jsonpickle

用于将任意任意对象图序列化为JSON的Python库。 它几乎可以带任何Python对象,并把对象转换成JSON。 另外,它可以将对象重新组装成Python。

json.dumps需要一个dictonary作为参数。 对于实例c ,属性c.__dict__是将属性名称映射到相应对象的字典。