चूंकि JSON प्रारूप निर्दिष्ट करता है कि सिंगल कोट्स से बच नहीं जाना चाहिए, इसलिए अधिकांश पुस्तकालय (या यहां तक कि देशी JSON पार्सर) विफल हो जाएंगे यदि आपके पास एक से बच निकला है। अब यह आमतौर पर एक समस्या नहीं है क्योंकि अधिकांश समय आप एक एक्सएचआर करते हैं जो JSON के रूप में स्वरूपित कुछ डेटा प्राप्त करता है और आप प्रतिक्रिया टेस्ट का उपयोग करते हैं जिसमें आपकी JSON स्ट्रिंग है जिसे आप पार्स कर सकते हैं, आदिJSON शाब्दिक स्ट्रिंग का उपयोग कैसे करें?
इस विशेष स्थिति में, मेरे पास डेटाबेस में एक JSON स्ट्रिंग है जो टेक्स्ट के रूप में संग्रहीत है ... इसलिए डेटाबेस में {"property":"value"}
जैसा कुछ है और मैं इसे सर्वर द्वारा बनाए गए HTML पृष्ठ के हिस्से के रूप में आउटपुट करना चाहता हूं ताकि उस पृष्ठ में जावास्क्रिप्ट कोड ऐसा कुछ दिखाई दे:
var x = '{"property":"value"}';
अब
यदि डेटाबेस में JSON स्ट्रिंग इस तरह एक भी बोली में शामिल हैं:
{"property":"val'ue"}
तो मैं यह से बचने के लिए की जरूरत है वरना मैं एक स्ट्रिंग के रूप में उपयोग करने के लिए सक्षम नहीं होगा:
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"}'));
सवाल तो क्यों {"prop":"val\'ue"}
एक मान्य JSON स्ट्रिंग नहीं माना जाता है?
तो, console.ir (JSON.parse ('{"prop": "val \' ue"} ') के साथ समस्या क्या है? यह मेरे लिए काम करता है (क्रोम) – mykhal
ठीक है यह काम करता है, मेरा सवाल यह था कि यह क्यों अमान्य JSON {"prop": "value \ 'ue"} (विनिर्देशों द्वारा) माना जाता है जब एक ऐसी स्थिति में जहां मैं आपको बताता हूं यह आपकी स्ट्रिंग में है। यह अब मुझे पहले से ही एन्कोडेड JSON स्ट्रिंग को फिर से संसाधित करने के लिए मजबूर कर रहा है। – SBUJOLD