这个错误通常是因为在AWS Lambda函数中使用了Decimal类型的对象,而JSON序列化不支持直接将Decimal类型转换为JSON格式。为了解决这个问题,你可以按照以下步骤进行调整:
decimal模块:import decimal
json.JSONEncoder:class DecimalEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, decimal.Decimal):
return float(o)
super(DecimalEncoder, self).default(o)
json.dumps方法,并指定cls参数为上一步创建的JSON编码器类:response = {
'statusCode': 200,
'body': json.dumps(your_data, cls=DecimalEncoder)
}
这样,当Lambda函数返回包含Decimal类型的对象的JSON响应时,会将Decimal类型自动转换为浮点数类型,从而避免了序列化错误。
注意:如果你的Lambda函数中没有使用Decimal类型的对象,那么可能是请求或响应中的数据类型导致了这个问题。确保所有的数据类型都是支持JSON序列化的。