5
我正在建立一個網站,使用Flask,我使用jsonify方法很多將主要字典轉換爲Json。如何將Python數據結構中的所有小數轉換爲字符串?
的問題是,現在我也用小數很多,可惜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數據結構中的所有十進制數字(無論是列表,字典,元組等等)轉換爲字符串,以便我可以安全地將數據結構轉換爲json?
也許不是最好的方法,但你可以不用'Decimal'子類來覆蓋它的'__repr__'方法來得到你想要的? –