decimal类型的对象不可JSON序列化
我在用python和echarts写可视化的时候调用数据库里的数据,统计一组数据的平均值
sql ='select time, avg(money) from work where time = 2016 union select time,avg(money) from work where time = 2017'
cur.execute(sql)
see = cur.fetchall()
time = []
num = []
jsonData = {}
for data in see:
time.append(data[0])
num.append(data[1])
jsonData['time'] = time
jsonData['num'] = num
j = json.dumps(jsonData)
cur.close()
con.close()
return (j)
调用的时候一直报错
然后查了很多资料,也没明白是怎么回事,最后找到了一段代码,把它加上去后就可以序列化了
class DecimalEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, decimal.Decimal):
return float(o)
super(DecimalEncoder, self).default(o)
j = json.dumps(jsonData,cls=DecimalEncoder)#jsonData是结合上下文自己定义的