如何将{val: 1}
之类的JSON对象作为查询参数传递给我的Lambda函数?
在Standardized way to serialize JSON to query string?之后我对我的JSON对象进行了URL编码,并请求了以下内容:mysite.com/path?json=%7B%22val%22%3A%201%7D
作为requestTemplates我尝试了以下两个选项
"json": "$input.params().querystring.json"
"json": "$util.parseJson($input.params().querystring.json)"
但我收到此错误消息:
{“message”:“无法将请求主体解析为json:意外 character(\'v \'(代码118)):期待逗号分隔OBJECT 条目\ n在[来源:[B @ 37a2970e; line:1,column:47]“}
如果我不对查询字符串进行编码,那么:mysite.com/path?json={"val":1}
我得到400错误
答案 0 :(得分:3)
$util.urlDecode
解码网址编码字符串您的地图模板应如下所示:
{"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)