En plantillas de Django que han impreso los datos de esta manera:de análisis JSON - comilla simple dentro de nombre
P.place = '{{place.json|safe}}';
A continuación, en el archivo JavaScript estoy de pelado de esa manera:
place = JSON.parse(P.place);
Todo está bien para los datos por el estilo:
{"category": "Cars", "name": "Z"}
Debido a que la cadena se ve así:
P.place = '{"category": "Cars", "name": "Z"}'
Entonces, puedo analizarlo usando el método JSON.parse que acepta cadenas como entrada.
El problema es que cuando llegue a los datos así:
{"category": "Cars", "name": "Wojtek's Z"}
Debido a que la cadena de entrada para JSON analizador se ve así:
'{"category": "Cars", "name": "Wojtek'
no puedo escapar comilla simple dentro cadena JSON, porque entonces JSON la cadena se vuelve inválida Por la misma razón, no puedo reemplazar las comillas que rodean por el doble y escapar las comillas dobles dentro de la cadena JSON.
Mi solución que parece:
En plantilla HTML:
P.place = {{place.json|safe}};
Luego, en JavaScript
var place = JSON.stringify(P.place);
place = JSON.parse(place);
Funciona, pero no es óptima en mi humilde opinión solución.
¿Cómo resolver este problema de una manera más astuta?
DEBE solicitar un apóstrofo dentro de JSON, no hay forma de evitarlo. Pero generalmente puede escapar, si define un objeto usando "\". O si lo prefieres, escapa unicode \ u0027 (creo). – StaxMan
No puede hacer eso, revise jsonlint.com y json.org –
No puede hacer qué? Echa un vistazo a la especificación json. – StaxMan