aws api 网关的速度转义字符

escape characters in velocity for aws api gateway

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

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

因为名称可以有字符 lika " 和 \ 中断 JSON,我需要将它们转义,所以按照手册,我使用:

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

但我得到了结果

"name" : "",

知道为什么吗?或者有什么选择吗?我在周围找不到任何东西。

干杯!

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

我在它的 $util 中没有看到您感兴趣的内容。但是你必须记住,你可以访问 String 对象的所有方法,所以你可以这样做:

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

为此添加了一个新函数。 $util.escapeJavaScript()