文档参考:http://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html
在AMS VTL中,可以指定模型模式中的字典字段:
"field1" : {"type":"string"},
"field2" : {"type":"number"},
所以映射模板可以填充这样的字段:
#set($inputRoot = $input.path('$'))
"questions" :
[
#foreach($elem in $inputRoot)
{
"field1" : "$elem.field1",
"field2" : $elem.field2
}#if($foreach.hasNext),#end
#end
]
然而......我的iOS应用抱怨收到的数据不是JSON格式。如果我在$elem.field2
附近添加引号,那么iOS会接受JSON并将所有字段转换为字符串。
我的Lambda函数正在返回一个标准的JSON字典列表,其中field2
定义为整数。
但是APIG会为我的所有字段返回字符串,并以{}
和前缀分隔:
{S=some text}
{N=10000000500}
所以我可以看到field2不是数字而是字符串{N=10000000500}
。
如何处理此系统中的数字?
答案 0 :(得分:1)
Undocumented but you can simply specify the type after the field name in a mapping template:
#set($inputRoot = $input.path('$'))
"questions" :
[
#foreach($elem in $inputRoot)
{
"field1" : "$elem.field1.S",
"field2" : $elem.field2.N
}#if($foreach.hasNext),#end
#end
]
Note that string fields need to be delimited in quotes.