You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

两个Lambda函数间传输JSON时如何正确格式化避免解析报错

问题核心原因

你的接收端代码逻辑完全错了。
AWS Lambda 被同步调用时,运行时会自动把传入的Payload字段里的合法JSON反序列化为Python原生的列表/字典对象,直接作为lambda_handler的event参数传入,根本不需要你再做一次JSON解析。
你看到的单引号格式根本不是传输过程中变了,是你自己写的str(event)把Python原生对象转成了Python自带的字符串表示格式——Python打印字典/列表时默认用单引号包裹键值,这个格式不是合法JSON,你再拿json.loads()去解析这个非JSON字符串,必然触发Expecting property name enclosed in double quotes报错。
你之前试的.encode()、base64.b64encode()全是无效操作,根本没碰对问题根源。

正确实现方式
  • 发送端代码不需要改:json.dumps(sendData)把Python对象序列化为合法JSON字符串传给Payload的写法是完全正确的。
  • 接收端只需要删掉两处多余操作即可:
    • 不要对event做str()转换
    • 删掉handle_data里多余的json.loads()步骤

修正后的接收端代码:

def lambda_handler(event, context):
    print("event: ", event)
    # event本身就是解析完成的Python结构,直接传入即可
    handle_data(event)

    return {
        'statusCode': '200',
        'body': 'Saved'
    }

def handle_data(data):
    # 不需要再做json.loads,data已经是可以直接使用的列表/字典
    print(data)
    write_to_dynamo(data)
    print("Done")
补充说明

不要多此一举做编码、手动解析流之类的操作。Lambda服务间调用的JSON序列化/反序列化是运行时自动完成的,你只需要保证发送端传的是json.dumps()生成的合法JSON字符串,接收端直接使用传入的event对象即可,不会出现格式错乱问题。

内容的提问来源于stack exchange,提问作者Zog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:15:11