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

可以致电vars

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
simplejsondemjson)只能处理具有直接JSON等效项(例如dicts,lists,strings,ints等)的Python原语。
jsonpickle 在这些库的基础上构建,并允许将更复杂的数据结构序列化为JSON。

强调我的。