Java VelocityEngine从字符串中删除转义字符
当我打电话时:Java VelocityEngine从字符串中删除转义字符,java,escaping,velocity,Java,Escaping,Velocity,当我打电话时: velocityEngine.evaluate(velocityContext,编写器,”,模板) 使用参数.querystring={“hi”:“\“hello\”} 经过评估后,writer包含{“hi”:“hello”“} 问题: 为什么Velocity会删除转义字符 如何防止删除转义字符 注意:我不知道速度引擎,所以请少说一点 为什么Velocity会删除转义字符 最有可能的是VelocityEngine将parameter.querystringJSON中的值作为单个
velocityEngine.evaluate(velocityContext,编写器,”,模板)代码>
使用参数.querystring
={“hi”:“\“hello\”}
经过评估后,writer
包含{“hi”:“hello”“}
问题:
- 为什么Velocity会删除转义字符
- 如何防止删除转义字符
注意:我不知道速度引擎,所以请少说一点
为什么Velocity会删除转义字符
最有可能的是VelocityEngine将parameter.querystring
JSON中的值作为单个字符串读取。因此字符串“\”hello\”
被读取为文本“hello”
。然后在编写器的后面,它只是将这个字符串按原样粘贴回去
就我个人而言,我认为这是作者源代码中的一个缺陷,在插入之前,作者应该使用类似于的内容来转义所有字符
如何防止删除转义字符
可以手动添加另一个转义的\
,作为编写器行为的解决方法。因此,您的参数.querystring
将变成:
{"hi": "\\\"hello\\\""}
基本上是文本\\“hello\”
,其中\
和“
字符都用一个额外的\
转义以放入java字符串中。我不懂VelocityEngine,所以我无法帮助你回答第一个问题。至于第二个问题,{“hi”:“\\\\\\\\“hello\”}
asparameter.querystring
help?@KevinCruijssen,yes“\\\\”你好\\\\”
help