将Python对象转换为JSON输出

Hap*_*rs 3 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)
Run Code Online (Sandbox Code Playgroud)

我希望看到类似的东西

{
  "double":"200",
  "triple":"300",
  "quadruple":"400"
}
Run Code Online (Sandbox Code Playgroud)

但是得到一个错误:"TypeError:< main.在0x0149A3F0处的多个对象>不是JSON可序列化的"

cs9*_*s95 10

您可以序列化以下__dict__属性m:

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

可以打电话vars:

In [216]: json.dumps(vars(m))
Out[216]: '{"quadruple": 400, "double": 200, "triple": 300}'
Run Code Online (Sandbox Code Playgroud)

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


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

jsonpickle是一个Python库,用于将复杂Python对象与JSON进行序列化和反序列化.标准Python库编码的Python成JSON,如STDLIB的json, simplejsondemjson,只能处理有直接JSON等效的Python原语(例如dictS,listS,str英格斯,intS,等). jsonpickle构建在这些库之上,允许将更复杂的数据结构序列化为JSON.

强调我的.

  • 最好使用[`vars`](https://docs.python.org/2/library/functions.html#vars) (4认同)
  • 打了我一秒钟,很好的答案 (2认同)