代码之家  ›  专栏  ›  技术社区  ›  RudziankoÅ­

VelocityEngine从字符串中删除转义字符

  •  1
  • RudziankoÅ­  · 技术社区  · 7 年前

    velocityEngine.evaluate(velocityContext, writer, "", template);

    具有 parameter.querystring {"hi": "\"hello\""}

    评估后 writer 包含 {"hi": ""hello""}

    问题:

    • 如何防止删除转义字符?
    1 回复  |  直到 7 年前
        1
  •  2
  •   Kevin Cruijssen    7 年前

    注意:我不知道速度引擎,所以请带上一点盐。

    为什么Velocity会删除转义字符?

    最有可能的是VelocityEngine读取中的值 parameter.querystring JSON作为单个字符串。那么绳子呢 "\"hello\"" 作为文本阅读 "hello" . 然后在编写器的后面,它只是将这个字符串按原样粘贴回去。

    Pattern.quote(String) 在插入前转义所有字符。

    如何防止删除转义字符?

    \ 可以手动添加,作为编写器行为的解决方法。那么你的 参数查询字符串 将成为:

    {"hi": "\\\"hello\\\""}
    

    基本上是文本 \"hello\" ,而 和 " 字符将用附加字符进行转义 将其放入java字符串中。