Estoy tratando de enviar un objeto JSON a una propiedad en javascript usando thymeleaf, pero cuando se recibe el valor, todas las comillas se convierten a ".
En mi POJO, tengo el siguiente método:
public class MyObject { public String toJSON() throws IOException { StringWriter result = new StringWriter(); if (this.getCaseRegistrations().size() > 0) { ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(result, this.caseRegistrations); } return result.toString(); } Y en otro lugar, esa clase se crea y está lista para usar y se envía a ModelAndView en el controlador Spring: mav.addObject("myObject", myObject);
En mi página html, tengo lo siguiente:
<script type="text/javascript"> $(document).ready(function() { let registrations = [[ ${myObject.toJSON()} ]] console.log(registrations); }); Desafortunadamente, cuando esto se ejecuta, javascript falla en la tarea con una queja sobre & . Mirando la fuente, veo lo siguiente: let registrations = [{"prop1":"val1", ...}];
Cuando miro la cadena en el lado de Java (en modo de depuración), el valor parece correcto [{ "prop1": "val1", ...}]
Intenté varias cosas, como let registrations = '[[ ${myObject.toJSON()} ]]' (usando la comilla inversa aquí) y dejar registrations = decudeURI[[ ${myObject.toJSON()} ]]) y [# th:utext="${myObject.toJSON()}"/]; . Ese último intento (con th:utext), fracasó por completo.
¿Cuál es la forma correcta de convertir un POJO a un JSON y asignarlo a una variable en javascript en una página html? (Java-Primavera-Thymeleaf)
No tengo mucha experiencia en esta tecnología, pero puedo ayudarlo a dar un escenario.
strrplace() no lo sé si conoce alguna otra función [http://w3schools.com/php/func_string_str_replace.asp] mire aquí reemplazará todos los corchetes. ver el primer argumento será lo que desea reemplazar y el segundo será con lo que desea reemplazar.en mi caso fue como,
$user=str_replace("'[',']','{','}'",(my json variable data));