4

如何将 JSON 对象{val: 1}作为查询参数传递给我的 Lambda 函数?
遵循将 JSON 序列化为查询字符串的标准化方法?我对我的 JSON 对象进行 URL 编码并请求以下内容:mysite.com/path?json=%7B%22val%22%3A%201%7D

作为requestTemplates我尝试了以下两个选项

  1. "json": "$input.params().querystring.json"
  2. "json": "$util.parseJson($input.params().querystring.json)"

但我收到了这个错误信息:

{“消息”:“无法将请求正文解析为 json:意外字符(\'v\'(代码 118)):在 [Source: [B@37a2970e; line: 1,列:47]"}

如果我不对查询字符串进行编码,则:mysite.com/path?json={"val":1}我收到 400 错误

4

1 回答 1

3
  1. 您的映射模板没有生成有效的 JSON,您必须将键/值对包装在花括号中
  2. 我猜您不想将值用引号引起来,否则它将是一个字符串而不是对象
  3. 您可以使用$util.urlDecode解码 URL 编码的字符串

您的映射模板应如下所示:

{"json": $util.urlDecode($input.params().querystring.json)}

对于mysite.com/path?json=%7B%22val%22%3A%201%7D此映射模板,将生成以下 JSON:

{
  "json": {
    "val": 1
  }
}

如果您希望在根级别将查询字符串 JSON 传递给您的 Lambda 函数,请将其用作映射模板:

$util.urlDecode($input.params().querystring.json)
于 2016-04-20T20:37:52.190 回答