可能重复:
Python可序列化对象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 ...
Run Code Online (Sandbox Code Playgroud)
使用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__)
Run Code Online (Sandbox Code Playgroud)
产生以下错误:
TypeError: <__main__.D instance at 0x99237ec> is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
我不知道用户可能会放入哪些类型的子对象c
.是否存在足够智能的解决方案来检测属性是否为对象并__dict__
自动解析?
更新以包括子对象c
.
phi*_*hag 121
指定default=
参数(doc):
json.dumps(c, default=lambda o: o.__dict__)
Run Code Online (Sandbox Code Playgroud)
Aus*_*all 17
json.dumps(c.__dict__)
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个通用的JSON对象,如果这是你想要的.
尝试使用这个包python-jsonpickle
用于将任意对象图序列化为JSON的Python库.它几乎可以占用任何Python对象并将对象转换为JSON.此外,它可以将对象重新构建回Python.