(これが私のモデルスキームです:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "QuestionsModel",
"type": "array",
"items": {
"type": "object",
"properties": {
"section_name": { "type": "string" },
"options" : {
"type" : "array",
"items" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
}
}
マッピング テンプレートは次のとおりです。
#set($inputRoot = $input.path('$'))
[
#foreach($question in $inputRoot) {
"section_name" : "$question.section_name.S",
"options" : [
#foreach($items in $question.options.L) {
[
#foreach($item in $items.L) {
"$item.S"
}#if($foreach.hasNext),#end
#end
]
}#if($foreach.hasNext),#end
#end
]
}#if($foreach.hasNext),#end
#end
]
この構文はデータを正しくマップしますが、「オプション」は空の配列になります。
「オプション」を指定しないと、iOS アプリは有効な JSON を受け取ります。しかし、「オプション」のさまざまな構文を試すと、無効な JSON または「内部サービス エラー」が発生し、CloudWatch はそれほど優れた製品ではありませんUnable to transform response。
有効なオプション{L=[{"L":[{"S":"1"},{"S":"Dr"}]},{"L":[{"S":"2"},{"S":"Mr"}]},{"L":[{"S":"3"},{"S":"Ms"}]},{"L":[{"S":"4"},{"S":"Mrs"}]},{"L":[{"S":"5"},{"S":"Prof."}]}]}には、Lambda 関数によって提供される次のコンテンツが入力されます。
現時点では、API Gateway VTL はネストされた配列をサポートしていないとしか言えません。