AWS Api 网关中的速度:如何访问对象数组
Velocity in AWS Api Gateway: how to access array of objects
所以在 AWS Api 网关中,我正在查询我的 DynamoDB 并得到这个 JSON 作为回复:
因此,Items 是一个包含 3 个对象的数组。我需要提取这些对象的属性:TS、Key 和 CamID。
我在集成响应中使用 Velocity。这是我的映射模板:
#set($count = $input.json('$.Count'))
#set($items = $input.json('$.Items'))
{
"count" : $count,
"items" : $items,
"first_item": $items[0]
},
来自 API 网关的结果:
{
"count" : 3,
"items" : [{"TS":{"N":"1599050893346"},"Key":{"S":"000000/000000_2020-08-02-12.48.13.775-CEST.mp4"},"CamID":{"S":"000000"}},{"TS":{"N":"1599051001832"},"Key":{"S":"000000/000000_2020-08-02-12.50.01.220-CEST.mp4"},"CamID":{"S":"000000"}},{"TS":{"N":"1599051082769"},"Key":{"S":"000000/000000_2020-08-02-12.51.22.208-CEST.mp4"},"CamID":{"S":"000000"}}],
"first_item":
}
first_item总是returns空值
在像这样的纯数组中:
#set($foo = [ 42, "a string", 21, $myVar ])
"test" : $foo[0]
“测试”returns 42
为什么我的代码不能处理对象数组?
$items
是一个 JSON 字符串(不是 JSON 对象),所以 $items[0]
没有意义。
如果要访问第一项,请使用 $input.json('$.Items[0]')
。
如果要遍历它们,可以先使用 $util.parseJson()
将 JSON 字符串转换为对象
所以在 AWS Api 网关中,我正在查询我的 DynamoDB 并得到这个 JSON 作为回复:
因此,Items 是一个包含 3 个对象的数组。我需要提取这些对象的属性:TS、Key 和 CamID。
我在集成响应中使用 Velocity。这是我的映射模板:
#set($count = $input.json('$.Count'))
#set($items = $input.json('$.Items'))
{
"count" : $count,
"items" : $items,
"first_item": $items[0]
},
来自 API 网关的结果:
{
"count" : 3,
"items" : [{"TS":{"N":"1599050893346"},"Key":{"S":"000000/000000_2020-08-02-12.48.13.775-CEST.mp4"},"CamID":{"S":"000000"}},{"TS":{"N":"1599051001832"},"Key":{"S":"000000/000000_2020-08-02-12.50.01.220-CEST.mp4"},"CamID":{"S":"000000"}},{"TS":{"N":"1599051082769"},"Key":{"S":"000000/000000_2020-08-02-12.51.22.208-CEST.mp4"},"CamID":{"S":"000000"}}],
"first_item":
}
first_item总是returns空值
在像这样的纯数组中:
#set($foo = [ 42, "a string", 21, $myVar ])
"test" : $foo[0]
“测试”returns 42
为什么我的代码不能处理对象数组?
$items
是一个 JSON 字符串(不是 JSON 对象),所以 $items[0]
没有意义。
如果要访问第一项,请使用 $input.json('$.Items[0]')
。
如果要遍历它们,可以先使用 $util.parseJson()