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