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

如何在Amazon SQS发送含多属性消息体?Lambda报格式错误

问题原因及解决方案

核心问题

你遇到的Jackson解析错误,根源是发送到SQS的消息体不是有效的JSON格式。错误提示里的"Unrecognized token 'body'",说明解析器读到的第一个内容是body,但这不符合JSON语法规则——JSON顶层结构必须是对象({})、数组([])、字符串、数字、布尔值或null,而单独的"body": {...}只是一个键值对,并非完整的JSON对象。

SQS消息体格式要求

SQS本身对消息体没有强制的JSON要求,它可以接受任意字符串。但如果你的Lambda函数需要将消息体解析为JSON,那么消息体必须是标准JSON格式:

  • 顶层必须是完整的JSON对象(用{}包裹所有键值对)或数组
  • 所有字符串、键名必须用双引号包裹
  • 无必要的转义字符(仅在字符串内部需要转义时使用)

修正后的正确消息体

如果业务逻辑需要保留body作为顶层键,完整消息体应为:

{
    "body": {
        "id": "body127",
        "time": "null",
        "type": "credit-card-accounting.application-accounting",
        "payload": {
            "application_id": "3d6d2a1f78f54735b44f8b86e0db7570ccla",
            "date": "2023-02-14"
        },
        "metadata": {
            "created_at": "2023-02-15T08:02:09.935433Z",
            "service_name": "credit-card-accounting",
            "request_id": "a6bd8261-e452-5652-ba2e-de0777ec6e6b"
        }
    }
}

如果不需要顶层body键,直接发送内部对象即可:

{
    "id": "body127",
    "time": "null",
    "type": "credit-card-accounting.application-accounting",
    "payload": {
        "application_id": "3d6d2a1f78f54735b44f8b86e0db7570ccla",
        "date": "2023-02-14"
    },
    "metadata": {
        "created_at": "2023-02-15T08:02:09.935433Z",
        "service_name": "credit-card-accounting",
        "request_id": "a6bd8261-e452-5652-ba2e-de0777ec6e6b"
    }
}

控制台发送注意事项

在SQS控制台发送消息时:

  • 直接在"Message body"输入框粘贴标准JSON内容,不要额外添加引号或转义字符
  • 可提前用本地JSON校验工具验证格式,避免语法错误

内容的提问来源于stack exchange,提问作者rahul.cs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:24:27