报这个错是因为json.dumps函数发现字典里面有 Decimal类型的数据,无法JSON serializable
解决方法:是检查到Decimal类型的值转化成float类型
import json class DecimalEncoder(json.JSONEncoder): def default(self,o): if isinstance(o,decimal.Decimal): return float(o) super(DecimalEncoder,self).default(o) #引用 j = json.dumps(var,cls=DecimalEncoder)
类似还有:TypeError: Object of type 'type' is not JSON serializable
原因是因为json.dumps函数发现字典里面有bytes类型的数据,无法编码。解决方法:在编码函数之前写一个编码类,只要检查到了是bytes类型的数据就把它转化成str类型。
import json
class BytesEncoder(json.JSONEncoder):
def default(self,obj):
"""
只要检查到了是bytes类型的数据就把它转为str类型
:param obj:
:return:
"""
if isinstance(obj,bytes):
return str(obj,encoding='utf-8')
return json.JSONEncoder.default(self,obj)