Как преобразовать массив в json с помощью шаблона скорости для шлюза api aws?
Я работал над написанием шаблонов скорости для aws api-gateway, чтобы преобразовать ответ json из моего API, чтобы дать последовательный ответ пользователю.
Я пытался преобразовать этот json:
{
"amountCharges": [
"charge1", "charge2", "charge3"
]
}
к этому ожидаемому:
{
"charges": [
"charge1", "charge2", "charge3"
]
}
Мне удалось создать массив для объектов, используя этот шаблон:
#set( $inputRoot = $input.path('$') )
"charges": [
#foreach( $charge in $inputRoot.charges )
{
"type": "$charge.chargeType",
"name": "$charge.chargeName",
"amount": {
"value": $charge.chargeAmount.amountValue,
"currency": "$charge.chargeAmount.amountCurrency"
},
#if( $charge.chargeTax )
"tax": {
"name": "$charge.chargeTax.taxName",
"amount": {
"value": $charge.chargeTax.taxAmount.amountValue,
"currency": "$charge.chargeTax.taxAmount.amountCurrency"
}
}
#end
}
#if( $foreach.hasnext ) , #end
#end
]
в то время как этот шаблон смог преобразовать мой массив объектов json в желаемый ответ. Пример упомянутый ниже:
{
"charges": [
{
"chargeType": "someType1",
"chargeName": "someName1",
"chargeAmount": {
"amountValue": 5,
"amountCurrency": "someCurrency1"
},
"chargeTax": {
"taxName": "someTax1",
"taxAmount": {
"amountValue": 5,
"amountCurrency": "someCurrency1"
}
}
},
{
"chargeType": "someType2",
"chargeName": "someName2",
"chargeAmount": {
"amountValue": 10,
"amountCurrency": "someCurrency2"
}
}
]
}
шаблон преобразовал этот json в ожидаемый результат:
{
"charges": [
{
"type": "someType1",
"name": "someName1",
"amount": {
"value": 5,
"currency": "someCurrency1"
},
"tax": {
"name": "someTax1",
"amount": {
"value": 5,
"currency": "someCurrency1"
}
}
},
{
"type": "someType2",
"name": "someName2",
"amount": {
"value": 10,
"currency": "someCurrency2"
}
}
]
}
в основном я хочу преобразовать массив строк, а не пару ключ-значение. Любые зацепки были бы полезны. заранее спасибо.
1 ответ
Решение
Просто нужна была простая настройка с моей стороны:
#set( $inputRoot = $input.path('$') )
"charges": [
#foreach( $amountCharge in $inputRoot.amountCharges )
"$amountCharge"
#if( $foreach.count < $inputRoot.amountCharges.size() ) , #end\
#end
]