1
JSON只允許字符串作爲鍵。使用自定義編碼器將帶有十進制密鑰的python字典轉換爲JSON
以下代碼使用自定義JSONEncoder將Decimal
值轉換爲字符串。
有沒有辦法指定一個編碼器,將Decimal
鍵變成字符串?
import json
import decimal
class DecimalEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, decimal.Decimal):
return str(obj)
return json.JSONEncoder.default(self, obj)
d1 = {3: decimal.Decimal(50)}
print(json.dumps(d1, cls=DecimalEncoder))
d2 = {decimal.Decimal(50): 3}
json.dumps(d2, cls=DecimalEncoder) # TypeError: keys must be a string
我正在使用python3.6
。
注意:顯然,我可以遍歷我的字典並用字符串值替換Decimal類型,但我希望能夠通過向編碼器添加行爲來找到更優雅的解決方案。
我收到此錯誤'NameError:名字 'K' 是不是在該行 '{回報STR(K)defined' :string_keys(v)for v in d}'。 – ChrisGuest
@ChrisGuest:抱歉,糾正。 –
@ChrisGuest:'keys_to_decimal'處理中的另一個錯誤;現在實際測試。 :-) –