簡體   English   中英

AWS Lambda python自定義響應編碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM