python – simplejson.dumps(dict)抛出“不是JSON可序列化”
发布时间:2020-12-20 11:23:01 所属栏目:Python 来源:网络整理
导读:我有一个 Python字典,其中键是字符串,值是MyObject对象的列表. 如果我执行 simplejson.dumps(dict) 它抛出“MyObject not JSON serializable”. 如何避免此异常,如何使MyObject可序列化? 解决方法 正确答案 为了使MyObject可序列化,您需要实现一个可以在转
我有一个
Python字典,其中键是字符串,值是MyObject对象的列表.
如果我执行 simplejson.dumps(dict) 它抛出“MyObject not JSON serializable”. 如何避免此异常,如何使MyObject可序列化? 解决方法
正确答案
为了使MyObject可序列化,您需要实现一个可以在转储上引用的方法.例如: 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) 很酷的是,转储将像其他所有JSON可序列化对象一样,以递归方式调用序列化方法.也就是说,obj.parent也会被序列化,而不需要你做任何进一步的操作. 高尔夫版本 如果您只想将1-1实例变量名称映射到它们各自的值,则可以使用一些内置的Python魔术.无论何时想要序列化更复杂的对象(同样,只使用1-1变量值映射),只需调用以下行: simplejson.dumps(anyObj,default=lambda obj: obj.__dict__) 对于给定的MyObject实例,它的行为与前面提到的序列化方法完全相同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |