Python TypeError:Decimal类型的对象不可JSON序列化
“TypeError:Decimal类型的对象不可JSON序列化”当我在postman api中运行时,我得到了上述错误,因为sales_Quaty是Decimal,我不知道如何在for循环中解析Decimal并作为JSON返回Python TypeError:Decimal类型的对象不可JSON序列化,python,json,decimal,flask-sqlalchemy,flask-restful,Python,Json,Decimal,Flask Sqlalchemy,Flask Restful,“TypeError:Decimal类型的对象不可JSON序列化”当我在postman api中运行时,我得到了上述错误,因为sales_Quaty是Decimal,我不知道如何在for循环中解析Decimal并作为JSON返回 from flask import Flask, jsonify import decimal,json result= [('V_M_001', 'KITE', 'Napkin', 1, 2, 12, 0, Decimal('0'), Decimal('0'), D
from flask import Flask, jsonify
import decimal,json
result= [('V_M_001', 'KITE', 'Napkin', 1, 2, 12, 0, Decimal('0'), Decimal('0'), Decimal('0'), Decimal('0')),
('V_M_001', 'KITE', 'Napkin', 2, 4, 34, 5, Decimal('1'), Decimal('4'), Decimal('0'), Decimal('0'))]
def fun():
for i in result:
data_all.append({
"machine_name":i.machine_name,
"location":i.location,
"item_name":i.item_name,
"row_no":i.row_no,
"require_minimum_stk_qty":i.require_minimum_stk_qty,
"capacity":i.capacity,
"stock_qty":i.stock_qty,
"sales_qty":i.sales_qty,
"available_qty":i.available_qty,
"sales_day_qty":i.sales_day_qty,
"sales_week_qty":i.sales_week_qty
})
return jsonify(data_all)
fun()
Output:
TypeError: Object of type Decimal is not JSON serializable
使用json.dump和cls参数,我相信当json模块不知道如何转换时,它会调用默认函数
import json
import decimal
class Encoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, decimal.Decimal): return float(obj)
json.dumps( ... , cls = Encoder)
```python
这回答了你的问题吗?不,您能否建议不同的解决方案有两种JSON数字类型,
int
和float
。没有复数,没有十进制。因此,如果您想使用JSON来表示您的数据,您几乎没有选择余地,只能决定您想要两种可用类型中的哪一种。或者,如果保留decimal.decimal的精度很重要,则可以将数据作为字符串传递,并将转换留给接收过程。