Gio*_*ner 3 python json dictionary simplejson serializable
我有一个Python字典,其中键是字符串,值是MyObject对象的列表.如果我执行
simplejson.dumps(dict)
Run Code Online (Sandbox Code Playgroud)
它抛出"MyObject not JSON serializable".
如何避免此异常,如何使MyObject可序列化?
为了使您的MyObject
序列化,您需要实现一个可以参考的方法dumps
.例如:
class MyObject:
# ...
# MyObject has 3 properties: name (a string), number (an int), and parent (a MyObject)
@staticmethod
def serialize(obj):
return {
"name": obj.name,
"number": obj.number,
"parent": obj.parent
}
# ...
simplejson.dumps(myObjInstance, default=MyObject.serialize)
Run Code Online (Sandbox Code Playgroud)
很酷的是,它dumps
会像其他所有JSON可序列化对象一样,以递归方式调用序列化方法.也就是说,obj.parent
也会进行序列化,而不需要您采取任何进一步的操作.
如果您只想将1-1实例变量名称映射到它们各自的值,则可以使用一些内置的Python魔术.无论何时想要序列化更复杂的对象(同样,只使用1-1变量值映射),只需调用以下行:
simplejson.dumps(anyObj, default=lambda obj: obj.__dict__)
Run Code Online (Sandbox Code Playgroud)
对于给定的实例MyObject
,它将表现与前述serialize
方法相同.
归档时间: |
|
查看次数: |
8638 次 |
最近记录: |