Създавам уебсайт, използвайки 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)
за съжаление, това не конвертира десетични числа, които се намират в dict или списък.
Как мога да конвертирам всички десетични числа в структура от данни на Python (било то списък, dict, кортеж и т.н.) в низ, така че да мога безопасно да конвертирам структурата от данни в json?
Decimal
и да замените неговия__repr__
метод, за да получите това, което искате? - person Two-Bit Alchemist   schedule 12.07.2014