这篇博客解决的问题主要是xxx is not JSON serializable
,这个问题是由于Python中对象不能够直接转化为JSON对象导致的。按照在Java中的开发经验,这个对象只要声明了各个属性应该可以直接转化的,但是Python中的JSON并不认同这一套。错误如下图所示:
在网上着了很多解决方案,大多数是建议将其转化为list对象,但是这里还有另外一种解决方法,就是直接指定JSON序列化对象使用的Encoder类。下面以一个例子来说明这种方法。
Item.py
1 | import json |
在这个文件中,声明了两个类,分别是Item和ItemEncoder,其中,ItemEncoder继承了JSONEncoder并重写了default方法。也就说,一旦检测到序列化对象是Item类的实例时,就会执行返回一个dict的逻辑,如上图所示。执行这段代码最终的结果是:
1 | {"name": "Richard", "age": 24} |