Я создаю веб-сайт, используя Flask, из которого я часто использую метод jsonify для преобразования в основном словарей в Json.
Проблема в том, что я также часто использую десятичные числа, и, к сожалению, jsonify не может обрабатывать десятичные числа:
jsonify({'a': Decimal('1')})
приводит к:
=== (a long stacktrace preceding this) ===
File "/usr/local/lib/python2.7/dist-packages/flask/json.py", line 83, in default
return _json.JSONEncoder.default(self, o)
File "/usr/lib/python2.7/json/encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: Decimal('1') is not JSON serializable
Поэтому я хотел обернуть jsonify в такой метод:
def myOwnJsonify(item):
if isinstance(item, Decimal):
return flask.jsonify(str(item))
else:
return flask.jsonify(item)
к сожалению, это не преобразует десятичные числа, которые находятся в словаре или списке.
Как я могу преобразовать все десятичные числа в структуре данных python (будь то список, dict, кортеж и т. д.) в строку, чтобы я мог безопасно преобразовать структуру данных в json?
Decimal
и переопределить его метод__repr__
, чтобы получить то, что вы хотите? - person Two-Bit Alchemist   schedule 12.07.2014