将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__
是将属性名称映射到相应对象的字典。