Скорость в AWS Api Gateway: как получить доступ к массиву объектов - PullRequest
1 голос
/ 02 августа 2020

Итак, в AWS Api Gateway я запрашиваю свой DynamoDB и получаю JSON в качестве ответа:

https://pastebin.com/GpQady4Z

Итак, Items представляет собой массив из 3-х объектов. Мне нужно извлечь свойства этих объектов: TS, Key и CamID.

Я использую скорость в ответе интеграции. Вот мой шаблон сопоставления:

#set($count = $input.json('$.Count'))
#set($items = $input.json('$.Items'))
{
"count" : $count,
"items" : $items,
"first_item": $items[0]
},

Результат от API Gateway:

{
"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 всегда возвращает пустое значение

В чистом массиве вроде этого:

#set($foo = [ 42, "a string", 21, $myVar ])
"test" : $foo[0]

"test" возвращает 42

Почему мой код не работает с массивом объектов?

1 Ответ

1 голос
/ 02 августа 2020

$items - это строка JSON (не JSON объект), поэтому $items[0] не имеет смысла.

Если вы хотите получить доступ к первому элементу, используйте $input.json('$.Items[0]').

Если вы хотите перебрать их, вы можете сначала преобразовать строку JSON в объект, используя $util.parseJson()

...