当我打电话时:
velocityEngine.evaluate(velocityContext, writer, "", template);
parameter.querystring
= {"hi": ""hello""}
评估后writer
包含{"hi": ""hello""}
问题:
- 为什么速度会删除转义字符?
- 如何防止删除转义字符?
注意:我不知道 VelocityEngine,所以对此持保留态度。
为什么速度会删除转义字符?
VelocityEngine 很可能将 JSON 中的值读取parameter.querystring
作为单个字符串。因此,字符串""hello""
被读取为文本"hello"
。然后在稍后的编写器中,它只是按原样粘贴此字符串。
我个人认为这是编写器源代码中的一个缺陷,它应该在插入之前使用类似于Pattern.quote(String)
的东西来转义所有字符。
如何防止删除转义字符?
可以手动添加其他转义作为编写器行为的解决方法。因此,您的
parameter.querystring
将变为:
{"hi": "\"hello\""}
基本上文本"hello"
,其中和
"
字符都通过附加将其放入java字符串中进行了转义。