转义aws api网关

时间:2018-04-13 13:04:03

标签: java amazon-web-services escaping aws-api-gateway velocity

我正在使用以下代码从API网关方法(附加到Lambda)返回一些值:

[
#foreach($element in $input.path('$.elements'))
  {
    "field1": "$element.field1",
    ...
    "name" : "$esc.java($element.name)",
    ...
  }#if($foreach.hasNext),#end
#end    
]

因为名字可以有chakaheters lika"和\打破JSON,我需要escpae他们,所以按照手册,我使用:

"name" : "$esc.java($element.name)",

但我得到了结果

"name" : "",

知道为什么吗?或者任何选择,好吗?我找不到任何东西。

干杯!

2 个答案:

答案 0 :(得分:1)

AWS未在其predefined context variables中提供EscapeTool $esc

我在$util看不到任何有趣的东西。但是你必须记住,你可以访问String对象的所有方法,所以你可以这样做:

$element.name.replace('\', '\\').replace('"', '\"')

答案 1 :(得分:0)

为此目的添加了一个新功能。 $util.escapeJavaScript()