2014-07-03 18 views
12

Come si fa a fuggire virgolette doppie se la stringa JSON è questo:Javascript fuga virgolette

var str = "[{Company: "XYZ",Description: ""TEST""}]" 

voglio sfuggire alle virgolette secondarie in TEST valore.

Ho provato questo ma non funziona.

var escapeStr = str.replace(/""/g,'\"'); 

Cosa mi manca?

+0

Perché stai costruendo JSON da soli piuttosto che usare 'JSON.stringify'? – Barmar

+2

come sidenote, l'espressione regolare che stavi usando non è corretta, dovrebbe essere 'str.replace (/"/g, '\ "')' – Kariudo

risposta

14

dovrebbe essere:

var str='[{"Company": "XYZ","Description": "\\"TEST\\""}]'; 

In primo luogo, ho cambiato le virgolette esterni a singoli apici, in modo da non entrare in conflitto con le virgolette interne. Quindi ho inserito la barra rovesciata prima delle virgolette più intime intorno a TEST, per sfuggire a esse. E sono sfuggito alla barra rovesciata in modo che sia trattata letteralmente.

È possibile ottenere lo stesso risultato con l'utilizzo di una funzione JSON:

var str=JSON.stringify({Company: "XYZ", Description: '"TEST"'}); 
+0

Tuttavia, il primo esempio non è ancora valido. Anche le chiavi dell'oggetto JSON devono avere una doppia virgoletta. Però, si dovrebbe davvero usare 'JSON.stringify' per questo. –

+1

Grazie, non ha notato che ha lasciato fuori quelle citazioni. – Barmar

+0

Ho dimenticato di citare l'oggetto JSON nel mio esempio. Proverò JSON.stringify. Grazie. – MDuB

0

Qui la citazione interna è sfuggita e l'intera stringa è stata presa in una singola citazione.

var str = '[{ "Company": "XYZ", "Description": "\\"TEST\\""}]'; 
+1

''\"' === '"'', devi escape backslashes dentro stringhe .. –

+0

Sì, hai ragione, ho aggiornato il post. – byJeevan

+1

btw Le chiavi dell'oggetto JSON devono essere anche quotate a doppia virgola. –