You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apache Velocity向JSON添加变量并转义的可行性咨询

当然可以用VTL实现这个需求!其实核心就是要对动态变量做JSON安全转义,避免特殊字符(比如双引号、换行、反斜杠)破坏JSON的结构。我给你两种常用的实现方式,根据你的场景选就行:

1. 手动拼接JSON字符串(适合简单场景)

如果你是直接构建一段JSON字符串,用VTL的$util.escapeJavaScript()工具函数就能完成转义。这个函数会自动处理所有JSON敏感字符,把它们转换成符合规范的转义序列。

比如你要把$foo作为值插入JSON:

#set($targetJson = "{\"message\": \"$util.escapeJavaScript($foo)\"}")

举个实际例子,如果$foo的内容是I'm using "VTL" to build JSON!,转义后生成的JSON会是:

{"message": "I'm using \"VTL\" to build JSON!"}

完全符合JSON格式要求,不会出现语法错误。

2. 先构建Map再序列化(适合复杂结构)

如果你的JSON结构比较复杂,手动拼接容易出错,更推荐先创建一个VTL Map对象,把动态变量添加进去后,再用$util.toJson()自动序列化为JSON字符串——这个方法会帮你自动处理所有转义逻辑,省心又可靠。

示例代码:

#set($jsonData = {})
#set($ignore = $jsonData.put("dynamicField", $foo))
#set($finalJson = $util.toJson($jsonData))

不管$foo里有什么特殊字符,$util.toJson()都会帮你处理好,生成合法的JSON。比如$foo包含换行符Hello\nWorld,序列化后的JSON会是:

{"dynamicField": "Hello\nWorld"}

注意事项

  • 绝对不要直接把未转义的$foo拼进JSON字符串里,比如"{\"key\": \"$foo\"}"——如果$foo里有双引号,直接就会把JSON搞坏,导致解析失败。
  • 如果你用的是AWS API Gateway这类环境,$util工具类是默认可用的;如果是其他VTL环境,可能需要确认是否有类似的转义函数,或者自己实现简单的转义逻辑(比如替换双引号为\",反斜杠为\\等)。

内容的提问来源于stack exchange,提问作者test

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:26:12