【发布时间】: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