如何构造带转义反斜杠的JSON以调用AWS Lambda
解决boto3调用Lambda时的Payload格式问题
问题核心:你的Lambda期望
body字段值是JSON字符串(而非JSON对象),所以需要对原始数据做两次JSON序列化:- 先把内层的
body对象序列化为JSON字符串 - 再把包含这个字符串的外层结构序列化为最终的JSON
- 先把内层的
具体代码实现:
import json # 原始数据 original_data = { "body": { "searchText": "3350961-STXML", "published": True } } # 第一步:将内层body对象转为JSON字符串 original_data["body"] = json.dumps(original_data["body"]) # 第二步:将整个结构转为最终的JSON字符串(Lambda可直接识别) final_payload = json.dumps(original_data)验证结果:
执行后final_payload的值为:'{"body":"{\\"searchText\\":\\"3350961-STXML\\",\\"published\\":true}"}'
和你手动测试可用的格式完全一致。
- 为什么之前的方法出错?
- 仅做一次
json.dumps:会把body作为JSON对象直接序列化,无法生成嵌套的转义字符串 - 手动替换反斜杠:容易出现转义次数错误,而两次序列化是Python JSON库自动处理转义,不会出错
- 仅做一次
内容的提问来源于stack exchange,提问作者Naji
相关产品推荐
相关产品推荐

