python – simplejson.dumps(dict)抛出“不是JSON可序列化”

python – simplejson.dumps(dict)抛出“不是JSON可序列化”,第1张

概述我有一个 Python字典,其中键是字符串,值是MyObject对象的列表. 如果我执行 simplejson.dumps(dict) 它抛出“MyObject not JSON serializable”. 如何避免此异常,如何使MyObject可序列化? 正确答案 为了使MyObject可序列化,您需要实现一个可以在转储上引用的方法.例如: class 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实例,它的行为与前面提到的序列化方法完全相同.

总结

以上是内存溢出为你收集整理的python – simplejson.dumps(dict)抛出“不是JSON可序列化”全部内容,希望文章能够帮你解决python – simplejson.dumps(dict)抛出“不是JSON可序列化”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192668.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存