Мы создаем успокоительный API, используя Spring MVC и freemarker в качестве языка шаблонов. Мы решили создать ответы json в freemarker
Пример freemarker.ftl:
{
"field1" : "${response.value1}",
"field2" : "${response.value2}"
}
У нас возникает проблема, когда строки в значениях содержат кавычки (или любые другие символы в синтаксисе JSON).
Вопрос: Как я могу избежать этих строк, используя freemarker?
Мы рассмотрели ?xml
или ?html
, но они не охватывают все соответствующие символы (например, \
).
РЕДАКТИРОВАТЬ: ?js_string
будет экранировать строку в соответствии с JavaScript. А поскольку JSON основан на JavaScript (JavaScript Object Notation), он будет работать.
EDIT2: В случае, если всплывает одиночная кавычка, ?js_script
сбрасывает ее, что снова приводит к неверному JSON. Исправление для него:
${variable?js_string?replace("\\'", "\'")}
и если вы действительно хотите быть разборчивым:
${variable?js_string?replace("\\'", "\'")?replace("\\>",">")}
В качестве альтернативы, если вы используете Spring: http://www.springsurf.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