В моем приложении 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
. Могу ли я заставить его игнорировать их?