Как избежать json-строк в freemarker

Мы создаем спокойный api, используя Spring MVC и freemarker в качестве языка шаблонов. Мы решили создавать ответы json в freemarker

Пример freemarker.ftl:

{
"field1" : "${response.value1}",
"field2" : "${response.value2}"
}

У нас возникает проблема, когда строки в значениях содержат кавычки (или любые другие символы в синтаксисе JSON).

Вопрос: Как я могу избежать этих строк с помощью freemarker?

Мы просмотрели ? xml или ? html , но они не охватывают все соответствующие символы (например, \ ).

EDIT: ? js_string будет экранировать строку для согласования с JavaScript. А поскольку JSON основан на JavaScript (нотация объектов JavaScript), он будет работать.

EDIT2: В случае появления одинарной кавычки, ? js_script ускользнет от него, что снова приведет к недопустимому JSON. Исправление для него:

${variable?js_string?replace("\\'", "\'")} 

и, если вы действительно хотите быть разборчивым:

${variable?js_string?replace("\\'", "\'")?replace("\\>",">")}

В качестве альтернативы, если вы используете Spring: http: // www. spri ngsurf.org/sites/1.0.0.M3/spring-webscripts/spring-webscripts-documentation / reference / html-single / index.html # js-api-index-org.springframework.extensions.webscripts.json.jsonutils

20
задан Skurpi 11 October 2013 в 10:49
поделиться