2013-05-12 38 views
15

Sto memorizzando oggetti JSON recuperati dal servizio Web agli oggetti in javascript. In molti punti ciò viene amplificato (questo obj passa attraverso alcuni plugin e lo strigura e lo memorizza e lo ritira) e aggiunge più barre. Come posso evitarlo?JSON.stringify sfugge le doppie virgolette ogni volta che viene stringa

http://jsfiddle.net/MJDYv/2/

var obj = {"a":"b", "c":["1", "2", "3"]}; 
var s = ""; 
console.log(obj); 
s = JSON.stringify(obj); 
alert(s); // Proper String 
s = JSON.stringify(s); 
alert(s); // Extra slash added, Quotes are escaped 
s = JSON.stringify(s); 
alert(s); // Again quotes escaped or slash escaped but one more slash gets added 
var obj2 = JSON.parse(s); 
console.log(obj2); // Still a String with one less slash, not a JSON object ! 

Così quando analizza questa stringa multipla io alla fine con una stringa di nuovo. E quando si tenta di accedere come un oggetto si blocca.

ho cercato di rimuovere barra utilizzando replace(/\\/g,"") ma io alla fine con questo: ""{"a":"b","c":["1","2","3"]}""

risposta

20

cosa ti aspettavi che accada?

JSON.stringify non si comporta come una funzione di "identità" quando viene richiamato su dati che sono già stati convertiti in JSON. In base alla progettazione, è sarà fuga virgolette, backslash, ecc

È necessario chiamare JSON.parse() esattamente quante volte hai chiamato JSON.stringify() di tornare lo stesso oggetto che si mette in.

+0

Sì sto facendo lo stesso ora, chiamandolo due volte. Ma in alcuni luoghi ha chiamato 3 o 4 volte. – user88975

+2

Grazie amico. Hai reso la mia giornata. –

5

si può evitare che semplicemente chiamando lo JSON.stringify() esattamente una volta sui dati che vuoi trasformare in JSON.

+0

Sì, ma la stringa originale passa attraverso una serie di chiamate di funzione (in alcuni plug-in) e infine quando viene restituita non sono sicuro di quante volte è stata codificata. – user88975

+4

non lo stringi mai fino a quando non è necessario. fino ad allora, basta aggiungere dati a un oggetto 'risultato' di javascript. –

Problemi correlati