将动态的Python对象转换为JSON

21 浏览
0 Comments

将动态的Python对象转换为JSON

这个问题已经有答案了:

如何使一个类转换成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__进行序列化?

admin 更改状态以发布 2023年5月23日
0
0 Comments

json.dumps(c.__dict__)

那将会给你一个通用的 JSON 对象,如果这是你的目标的话。

0
0 Comments

指定default=参数(文档):

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

0