2014-07-03 2 views
12

Wie Sie doppelte Anführungszeichen entkommen, wenn die JSON-String ist dies:Javascript Flucht Doppel Zitate

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

ich die sekundären doppelte Anführungszeichen in Wert TEST entfliehen möchten.

Ich habe das versucht, aber es funktioniert nicht.

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

Was fehlt mir?

+0

Warum bauen Sie JSON selbst anstatt 'JSON.stringify' mit? – Barmar

+2

als Nebenbemerkung, der reguläre Ausdruck, den Sie verwendeten, ist falsch, es sollte 'str.replace (/"/g, '\ "') sein' – Kariudo

Antwort

14

Es sollte sein:

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

Zuerst habe ich die äußeren Anführungszeichen zu einfachen Anführungszeichen geändert, so dass sie nicht mit den inneren Anführungszeichen in Konflikt geraten. Dann setze ich Backslash vor den innersten Zitaten um TEST, um ihnen zu entkommen. Und ich entkam dem Backslash, so dass es buchstäblich behandelt wird.

Sie können das gleiche Ergebnis unter Verwendung einer JSON-Funktion bekommen:

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

Das erste Beispiel ist jedoch immer noch ungültig. JSON-Objektschlüssel müssen ebenfalls doppelt zitiert werden. Allerdings sollte man dafür 'JSON.stringify' verwenden. –

+1

Danke, habe nicht bemerkt, dass er diese Zitate weggelassen hat. – Barmar

+0

Ich habe vergessen, das JSON-Objekt in meinem Beispiel zu zitieren. Ich werde JSON.stringify versuchen. Vielen Dank. – MDuB

0

Hier innere Zitat maskiert und gesamte Zeichenfolge in einzelnen Zitat genommen.

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

''\' '===' '' ', müssen Sie Escape Backslashes in Strings .. –

+0

Ja, Sie haben Recht, ich aktualisierte Post. – byJeevan

+1

btw JSON-Objektschlüssel müssen ebenfalls doppelt zitiert werden. –