VelocityEngine 从字符串中删除转义字符
VelocityEngine removes escape characters from string
当我打电话时:
velocityEngine.evaluate(velocityContext, writer, "", template);
与 parameter.querystring
= {"hi": "\"hello\""}
评估后 writer
包含 {"hi": ""hello""}
问题:
- 为什么 Velocity 会删除转义字符?
- 如何防止删除转义字符?
注意:我不了解 VelocityEngine,所以对此持保留态度。
Why does Velocity remove escaping characters?
VelocityEngine 很可能将 parameter.querystring
JSON 中的值作为单独的字符串读取。所以字符串 "\"hello\""
被读取为文本 "hello"
。然后稍后在编写器中,它只是按原样粘贴这个字符串。
我个人认为这是作者源代码中的一个缺陷,应该使用类似于 Pattern.quote(String)
的方式在插入之前转义所有字符。
How can I prevent removal of escaping characters?
可以手动添加一个额外的转义 \
作为作者行为的解决方法。所以你的 parameter.querystring
会变成:
{"hi": "\\"hello\\""}
基本上是文本 \"hello\"
,其中 \
和 "
字符都使用额外的 \
进行转义,以将其放入 java 字符串中.
当我打电话时:
velocityEngine.evaluate(velocityContext, writer, "", template);
与 parameter.querystring
= {"hi": "\"hello\""}
评估后 writer
包含 {"hi": ""hello""}
问题:
- 为什么 Velocity 会删除转义字符?
- 如何防止删除转义字符?
注意:我不了解 VelocityEngine,所以对此持保留态度。
Why does Velocity remove escaping characters?
VelocityEngine 很可能将 parameter.querystring
JSON 中的值作为单独的字符串读取。所以字符串 "\"hello\""
被读取为文本 "hello"
。然后稍后在编写器中,它只是按原样粘贴这个字符串。
我个人认为这是作者源代码中的一个缺陷,应该使用类似于 Pattern.quote(String)
的方式在插入之前转义所有字符。
How can I prevent removal of escaping characters?
可以手动添加一个额外的转义 \
作为作者行为的解决方法。所以你的 parameter.querystring
会变成:
{"hi": "\\"hello\\""}
基本上是文本 \"hello\"
,其中 \
和 "
字符都使用额外的 \
进行转义,以将其放入 java 字符串中.