Poiché il formato JSON specifica che le virgolette singole non devono essere sottoposte a escape, la maggior parte delle librerie (o anche il parser JSON nativo) non funzionerà se è presente una virgoletta singola con escape. Questo di solito non è un problema poiché la maggior parte delle volte si esegue un XHR che recupera alcuni dati formattati come JSON e si usa il responseText che contiene la stringa JSON che è quindi possibile analizzare, ecc.Come utilizzare una stringa letterale JSON?
In questa particolare situazione, Ho una stringa JSON memorizzata in un database come testo ... quindi il database contiene qualcosa come {"property":"value"}
e voglio produrre questo come parte di una pagina HTML creata dal server in modo che il codice JavaScript in quella pagina assomigli a qualcosa del genere:
var x = '{"property":"value"}';
Ora, se la stringa JSON nel database contiene un apice singolo come questo:
{"property":"val'ue"}
Poi ho bisogno di fuggire o altrimenti non sarò mai in grado di usarlo come una stringa:
console.clear();
var obj = {prop:"val'ue"};
var str = JSON.stringify(obj);
console.log("JSON string is %s",str);
console.dir(JSON.parse(str)); //No problem here
//This obviously can't work since the string is closed and it causes an invalid script
//console.dir(JSON.parse('{prop:"val'ue"}'));
//so I need to escape it to use a literal JSON string
console.dir(JSON.parse('{"prop":"val\'ue"}'));
La domanda allora è il motivo per cui {"prop":"val\'ue"}
non considerati come una stringa JSON valida?
quindi, qual è il problema con 'console.dir (JSON.parse ('{" prop ":" val \' ue "} '))'? funziona per me (cromo) – mykhal
Giusto funziona, la mia domanda era più perché considerava JSON {"prop" non valido: "valu \ 'ue"} (secondo le specifiche) quando in una situazione come quella che descrivo è necessario per avere questo nella tua stringa. Questo mi costringe ora a rielaborare una stringa JSON già codificata. – SBUJOLD