将Python对象转换为JSON输出

时间:2017-08-23 08:31:36

标签: python json

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可序列化"

1 个答案:

答案 0 :(得分:9)

您可以序列化__dict__的{​​{1}}属性:

m

can也会致电vars

In [214]: json.dumps(m.__dict__)
Out[214]: '{"quadruple": 400, "double": 200, "triple": 300}'

使用什么和原因: Use `__dict__` or `vars()`?

对于更复杂的课程,请考虑使用jsonpickle

  

In [216]: json.dumps(vars(m)) Out[216]: '{"quadruple": 400, "double": 200, "triple": 300}' 是一个用于序列化和反序列化的Python库   复杂的Python对象与JSON之间的关系。标准的Python   用于将Python编码为JSON的库,例如stdlib的jsonpickle,   jsonsimplejson只能处理有原型的Python原语   直接JSON等效(例如demjson s,dict s,liststr s等。    int建立在这些库之上,允许更复杂   要序列化为JSON的数据结构。

强调我的。