ПРИМЕЧАНИЕ: я не знаю VelocityEngine, поэтому возьмите это с крошкой соли.
Почему Velocity удаляет экранирующие символы?
Скорее всего, VelocityEngine читаетзначения в parameter.querystring
JSON как отдельные строки.Таким образом, строка "\"hello\""
читается как текст "hello"
.Затем в авторе записи он просто вставляет эту строку обратно как есть.
Лично я считаю это недостатком в исходном коде автора, который должен был использовать что-то вроде Pattern.quote(String)
для экранирования всех символов перед его вставкой.
Как предотвратить удаление экранирующих символов?
Дополнительный экранированный символ \
можно добавить вручную какобходной путь для поведения писателя.Таким образом, ваш parameter.querystring
станет:
{"hi": "\\\"hello\\\""}
В основном текст \"hello\"
, где символы \
и "
экранированы с дополнительным \
для помещения его в строку Java..