This question already has answers here:
How to make a class JSON serializable

(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}'

can也称为 vars :
In [216]: json.dumps(vars(m))
Out[216]: '{"quadruple": 400, "double": 200, "triple": 300}'

使用什么以及为什么:
Use `__dict__` or `vars()`?

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



强调我的。

09-28 03:43
查看更多