速度引擎从字符串中删除转义字符



当我打电话时:

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字符串中进行了转义。

最新更新