Estamos construyendo una API reparador utilizando Spring MVC y FreeMarker como el lenguaje de plantillas. Hemos elegido para construir respuestas JSON en el FreeMarkercómo escapar de las cadenas JSON en FreeMarker
Ejemplo freemarker.ftl:
{
"field1" : "${response.value1}",
"field2" : "${response.value2}"
}
Tenemos un problema cuando las cadenas en los valores contienen comillas (o cualquiera de los otros personajes de la sintaxis JSON)
La pregunta: ¿Cómo puedo escapar de estas cadenas usando freemarker?
Hemos visto ?xml
o ?html
pero no cubren todos los personajes relevantes (tales como \
).
EDIT:?js_string
escapó de la cadena para cumplir con JavaScript. Y dado que JSON está basado en JavaScript (JavaScript Object Notation), funcionará.
EDIT2: En caso de que aparezca una comilla simple, ?js_script
se escapará, lo que nuevamente conduce a JSON no válido. La revisión para es:
${variable?js_string?replace("\\'", "\'")}
y si realmente quiere ser exigente:
${variable?js_string?replace("\\'", "\'")?replace("\\>",">")}
Alternativamente, si se utiliza la primavera: 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
+1 para la alternativa de primavera –