将Python对象转换成JSON输出[重复]
问题内容:
这个问题已经在这里有了答案 :
如何使可序列化的JSON类 (34个答案)
3年前关闭。
Python的新手,尝试定义一个非常简单的类,该类将包含一些值,然后将其输出为JSON表示法。
import json
class Multiple:
def __init__(self, basis):
self.double = basis * 2
self.triple = basis * 3
self.quadruple = basis * 4
m = Multiple(100)
json.dumps(m)
我希望看到类似
{
"double":"200",
"triple":"300",
"quadruple":"400"
}
但是却收到错误:“ TypeError:< main 。位于0x0149A3F0的多个对象不是JSON可序列化的”
问题答案:
您可以序列化以下__dict__
属性m
:
In [214]: json.dumps(m.__dict__)
Out[214]: '{"quadruple": 400, "double": 200, "triple": 300}'
In [216]: json.dumps(vars(m))
Out[216]: '{"quadruple": 400, "double": 200, "triple": 300}'
使用什么以及为什么:
使用__dict__
或vars()
?
对于更复杂的类,请考虑使用jsonpickle
。
jsonpickle
是一个Python库,用于将复杂的Python对象与JSON进行序列化和反序列化。用于将Python编码为JSON的标准Python库(例如stdlib的json
,
simplejson
和demjson
)只能处理具有直接JSON等效项(例如dict
s,list
s,str
ings,int
s等)的Python原语。
jsonpickle
在这些库的基础上构建,并允许将更复杂的数据结构序列化为JSON。
强调我的。