Как преобразовать объект в JSON в AWS API Gateway? - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть несколько простых данных, которые я хочу преобразовать с помощью API Gateway:

{
    "data": [
        {"id":"1", "name":"Foo"},
        {"id":"2", "name":"Bar"},
        {"id":"3", "name":"Dead"},
        {"id":"4", "name":"Beef"}
    ]
}

Я могу l oop данных:

#foreach($elem in $input.path('$.data'))
    {
       "Data": $elem,
       "Foo": "Bar"
    }#if($foreach.hasNext),#end
#end

ожидаемый результат:

{"Data": {"id":"1", "name":"Foo"}, "Foo": "Bar"},
{"Data": {"id":"2", "name":"Bar"}, "Foo": "Bar"},
{"Data": {"id":"3", "name":"Dead"}, "Foo": "Bar"},
{"Data": {"id":"4", "name":"Beef"}, "Foo": "Bar"}

Тем не менее, фактический результат:

{"Data": {id=1, name=Foo}, "Foo": "Bar"},
{"Data": {id=2, name=Bar}, "Foo": "Bar"},
{"Data": {id=3, name=Dead}, "Foo": "Bar"},
{"Data": {id=4, name=Beef}, "Foo": "Bar"}

$elem дает {id=1, name=Foo}, что, по-видимому, является объекты строковые как. Я хотел бы иметь это в JSON, как мне это сделать? sh?

Я пробовал $elem.stringify(), $input.json($elem) и $elem.json(), но это не работает.

1 Ответ

0 голосов
/ 24 февраля 2020

Я придумал странное обходное чтение о $index и о том, как Apache Скорость работает:

#foreach($elem in $input.path('$.data'))
    #set($pathBegin = "$.data[")
    #set($pathEnd = "]")
    #set($currentIndex = $foreach.index)
    #set($thePath = "$pathBegin$currentIndex$pathEnd")
    #set($elemJson = $input.json($thePath)) 
  {
    "Data": $elemJson,
    "Foo": "Bar"
  }#if($foreach.hasNext),#end
#end

Возможно, это было бы более оптимизировано, но на самом деле это работает и печатает ожидаемый результат.

...