【发布时间】:2018-04-27 22:10:38
【问题描述】:
在我的 Flask 应用程序中,我使用自定义 JSONEncoder 序列化 decimal.Decimal 对象,四舍五入到两个位置。
class MyJsonEncoder(JSONEncoder):
def default(self, obj, prec=2):
if isinstance(obj, Decimal):
return str(obj.quantize(Decimal('.'+'0'*(prec-1)+'2')))
else:
return JSONEncoder.default(self, obj)
prec 参数让我可以更改舍入的精度。它默认为两个地方。我想偶尔调用json.dumps 并将prec 参数传递给它,这样我就可以强制decimal.Decimal 对象舍入到4 个位置。
json_string = json.dumps(some_data, prec=4)
但是当我这样做时,JSON 模块会抛出:
TypeError: __init__() got an unexpected keyword argument 'prec'
有可能做我在这里尝试的事情吗?我不明白为什么 JSON 模块对**kwargs 做任何事情。我可以强制它忽略它们吗?
【问题讨论】: