我需要知道如何将一个动态的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__
进行序列化?
class C(object): pass
。我添加了一个答案,应该可以解决你的问题。 - phihagclass C(): pass
当然是有效的,但在Python 2.x中它会创建一个旧风格的类(就像class C: pass
一样)。旧风格的类是奇怪的东西。通过从object
继承,您可以获得更加合理的新风格行为。 - phihag