2016-03-02 29 views
0

參考文件指定數字在VTL:http://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html上AMS API網關

在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函數返回的是返回定義爲整數的field2字典的標準JSON列表。

但APIG返回我的所有領域,與{}分隔字符串和一個前綴:

{S=some text} 
{N=10000000500} 

所以我可以看到,場2不是數字而是一個字符串{N=10000000500}

我該如何處理這個系統中的數字?

回答

1

無證但你完全可以指定一個映射模板字段名稱後類型:

#set($inputRoot = $input.path('$')) 
"questions" : 
[ 
#foreach($elem in $inputRoot) 
{ 
    "field1" : "$elem.field1.S", 
    "field2" : $elem.field2.N 
}#if($foreach.hasNext),#end 
#end 
] 

注意字符串字段需要引號分隔。