【问题标题】:AWS Lambda python custom response encodingAWS Lambda python 自定义响应编码
【发布时间】:2015-11-04 09:26:22
【问题描述】:

当您使用来自 dynamodb 的 lambda 函数查询数据并且其中包含二进制类型或十进制/数字类型时,我下面的默认设置会提示一个 JSONEncoding 错误,他无法处理二进制或十进制。我可以使用附加到 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 提示上述错误。

如何影响转换为 json 的 return 语句?

更新:

通过手动更改项目来解决问题:

test = operations['Items'][0]
test['id'] = float(test['id'])

但这看起来很乱。

【问题讨论】:

    标签: python json amazon-web-services lambda boto


    【解决方案1】:

    我假设您希望从 lambda 处理函数返回。如果是这样,虽然不优雅,但您可以这样做:

    json.loads(json.dumps(value, cls=JSONEncoder))
    

    不太好,因为最终 Lambda 会将该结构转换回字符串(不确定是否有办法跳过转换为 python 结构的中间步骤)。

    【讨论】:

    • 为什么这被否决了?事实上,这似乎是唯一的出路。令人费解。
    猜你喜欢
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2021-06-09
    • 2020-08-28
    • 2019-12-15
    • 2019-01-16
    相关资源
    最近更新 更多