2014-07-03 6 views
12

कैसे आप दोहरे उद्धरण चिह्नों से बचने अगर JSON स्ट्रिंग यह है:जावास्क्रिप्ट पलायन डबल उद्धरण

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

मैं मूल्य परीक्षा में माध्यमिक दोहरे उद्धरण चिह्नों से बचने के लिए चाहते हैं।

मैंने कोशिश की है लेकिन यह काम नहीं करता है।

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

मुझे क्या याद आ रही है?

+0

क्यों आप 'JSON.stringify' का उपयोग करने से अपने आप को द्वारा JSON का निर्माण कर रहे हैं बल्कि? – Barmar

+2

एक sidenote के रूप में, आप जिस नियमित अभिव्यक्ति का उपयोग कर रहे थे वह गलत है, यह 'str.replace (/"/g, '\ "') ' – Kariudo

उत्तर

14

यह होना चाहिए:

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

पहले, मैं सिंगल कोट्स को बाहरी उद्धरण बदल गया है, तो वे भीतरी उद्धरण के साथ संघर्ष नहीं होगा। फिर मैंने उनसे बचने के लिए TEST के आस-पास के सबसे कम उद्धरणों से पहले बैकस्लैश लगाया। और मैं बैकस्लैश से बच निकला ताकि इसका शाब्दिक व्यवहार किया जा सके।

आप एक JSON समारोह के उपयोग के साथ एक ही परिणाम प्राप्त कर सकते हैं:

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

पहला उदाहरण अभी भी अमान्य है। जेएसओएन ऑब्जेक्ट कुंजियों को भी डबल-कोट किया जाना चाहिए। हालांकि, इसके लिए किसी को वास्तव में 'JSON.stringify' का उपयोग करना चाहिए। –

+1

धन्यवाद, ध्यान नहीं दिया कि उन्होंने उन उद्धरणों को छोड़ दिया है। – Barmar

+0

मैं अपने उदाहरण में जेएसओएन ऑब्जेक्ट को दोबारा उद्धृत करना भूल गया। मैं JSON.stringify कोशिश करेंगे। धन्यवाद। – MDuB

0

यहां आंतरिक उद्धरण बच निकला और एकल स्ट्रिंग में पूरी स्ट्रिंग ली गई।

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

' '\"'==' '' '' 'होना चाहिए, आपको इसकी आवश्यकता है तारों के अंदर बैकस्लाश से बचें .. –

+0

हाँ, आप सही हैं, मैंने पोस्ट अपडेट किया है। – byJeevan

+1

बीटीडब्ल्यू जेएसओएन ऑब्जेक्ट कुंजियों को भी डबल-कोट किया जाना चाहिए। –

संबंधित मुद्दे