Проблема, безусловно, заключается в том, что эти символы экранированы в исходном JSON как \uXXXX
, но синтаксис строки FTL не имеет \u
escape.?eval
интерпретирует свой ввод как выражение FTL, а не как выражение JSON.Они похожи, но есть различия.(Кстати, насколько мне известно, в JSON не нужно экранировать en-dash и em-dash, аналогично авторскому праву, но, конечно, разрешается экранировать любой символ.)
Что делать?Подход FreeMarker-ish добавляет JSON к вашей модели данных, уже проанализированной в Map
-s (или Java-бины) и List
-s и тому подобное.Шаблон не предназначен для анализа ввода.Если это невозможно, вы можете добавить свой пользовательский метод в модель данных (возможно, как разделяемую переменную на уровне Configuration
), который выполняет настоящий анализ JSON, и затем вы называете его как eval_json(x)
.
* 1011.* В любом случае, каков вариант использования?Желание проанализировать JSON внутри шаблона часто возникает в SO.Возможно, следующая версия FreeMarker должна иметь
?eval_json
, если сценарий использования действителен.