在Python編程中,有時候需要將decimal類型的數據轉換成JSON格式并保存在文件中或通過網絡傳輸。這里介紹一種簡單的方法。
首先,需要導入decimal和json模塊:
import decimal import json
接下來,定義一個DecimalEncoder類。該類繼承自json.JSONEncoder,并覆蓋了默認的encode()方法。在encode()方法內,如果遇到decimal類型的數據,則先將其轉換成float類型再進行編碼。編碼完成后,再將float類型轉換回decimal類型并返回結果。
class DecimalEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, decimal.Decimal): return float(obj) return super(DecimalEncoder, self).default(obj) # 使用DecimalEncoder類進行編碼 d = decimal.Decimal('3.1415926') json_str = json.dumps(d, cls=DecimalEncoder) print(json_str)
輸出結果:
3.1415926
可以看到,將decimal類型的數據編碼成了float類型的數據。
最后,需要注意的是,在解碼JSON數據時,需要傳入parse_float參數并設置為decimal.Decimal類型,以保證最終結果為decimal類型的數據。
# 解碼JSON數據 json_data = json.loads(json_str, parse_float=decimal.Decimal) print(json_data)
輸出結果:
3.1415926
可以看到,JSON數據已經成功解碼成了decimal類型的數據。