[英]AWS Lambda python custom response encoding
當您使用dynamodb的lambda函數查詢數據並且其中包含二進制類型或十進制/數字類型時,下面的默認設置會提示他無法處理二進制或十進制的JSONEncoding錯誤。 我可以使用我附加到json.dumps(data, indent=2, cls=JSONEncoder)
代碼json.dumps(data, indent=2, cls=JSONEncoder)
class JSONEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, decimal.Decimal):
if o % 1 > 0:
return float(o)
else:
return int(o)
return super(JSONEncoder, self).default(o)
但是在你的return
語句前面使用json.dumps()
,雙json格式化響應並導致轉義符號。 要重復此問題,只需return data
帶有上述錯誤的return data
提示。
如何影響轉換為json的return
語句?
通過手動更改項目來解決問題:
test = operations['Items'][0]
test['id'] = float(test['id'])
但這看起來很混亂。
我假設你正在尋找從lambda處理函數返回。 如果是這樣,雖然不優雅,但你可以這樣做:
json.loads(json.dumps(value, cls=JSONEncoder))
不是很棒,因為最終Lambda會將該結構轉換回字符串(不確定是否有一種方法可以跳過轉換為python結構的中間步驟)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.