繁体   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