मेरे पास एक तार है
str = "{'a':1}";
JSON.parse(str);
VM514:1 Uncaught SyntaxError: Unexpected token '(…)
मैं JSON ऑब्जेक्ट में उपरोक्त स्ट्रिंग (str) को पार्स कैसे कर सकता हूं?
यह एक साधारण पार्सिंग की तरह लगता है। हालांकि यह काम नहीं कर रहा है।
मेरे पास एक तार है
str = "{'a':1}";
JSON.parse(str);
VM514:1 Uncaught SyntaxError: Unexpected token '(…)
मैं JSON ऑब्जेक्ट में उपरोक्त स्ट्रिंग (str) को पार्स कैसे कर सकता हूं?
यह एक साधारण पार्सिंग की तरह लगता है। हालांकि यह काम नहीं कर रहा है।
var str = "bad example";अच्छा अभ्यास नहीं है, बेहतर निम्नलिखित करें: var str = 'good example';=> इस तरह से आपको JSON के साथ कोई समस्या नहीं होगी और आपको HTML के साथ कोई समस्या नहीं होगी। :)
जवाबों:
JSON मानक दोहरे उद्धरण चिह्नों की आवश्यकता है और सिंगल कोट्स को स्वीकार नहीं करेगा, और न ही पार्सर होगा।
यदि आपके पास अपने तार में बिना बच गए एकल उद्धरणों के साथ एक सरल मामला है (जो सामान्य रूप से असंभव होगा, लेकिन यह JSON नहीं है), तो आप सरल हो सकते हैं str.replace(/'/g, '"')और आपको वैध JSON के साथ समाप्त होना चाहिए।
'title': "Mama's Friend"बन जाएगा "title": "Mama"s Friend", जो अमान्य है! मुझे आपके उत्तर को नीचा दिखाना चाहिए लेकिन मैं नीचता के खिलाफ हूं। यह टिप्पणी अधिक मूल्य की है।
मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन आप इस उद्देश्य के लिए JSON5 का उपयोग कर सकते हैं ।
<script src="json5.js"></script>
<script>JSON.stringify(JSON5.parse('{a:1}'))</script>
{'section': "24'"} जो बन जाता है: {"section": "24""} और पार्स नहीं करेगा।
<script>JSON.stringify(some_jsonString)</script>
यदि आप सुनिश्चित हैं कि आपका JSON आपके नियंत्रण में है (उपयोगकर्ता इनपुट नहीं) तो आप केवल JSON का मूल्यांकन कर सकते हैं। Eval सभी बोली प्रकारों के साथ-साथ बिना किसी संपत्ति के नाम को भी स्वीकार करता है।
var str = "{'a':1}";
var myObject = (0, eval)('(' + str + ')');
अतिरिक्त पैरेंटस की आवश्यकता इस कारण से है कि इवैल पार्सर कैसे काम करता है। जब आप डेटा पर नियंत्रण रखते हैं तो इसका उपयोग बुराई नहीं है। JSON.parse और eval के बीच अंतर के बारे में अधिक जानने के लिए () JSON.parse बनाम eval () देखें
कुछ इस तरह:
var div = document.getElementById("result");
var str = "{'a':1}";
str = str.replace(/\'/g, '"');
var parsed = JSON.parse(str);
console.log(parsed);
div.innerText = parsed.a;
<div id="result"></div>
var str = "{'a':1}";
str = str.replace(/'/g, '"')
obj = JSON.parse(str);
console.log(obj);
इससे मेरे लिए समस्या हल हो गई।
{'a':"A'A"}बन जाएगा{"a":"A"A"}
JSON में कुंजियों के लिए एकल उद्धरण का उपयोग करने की अनुमति नहीं है। आपको दोहरे उद्धरण चिह्नों का उपयोग करने की आवश्यकता है।
आपके उपयोग-मामले के लिए शायद यह सबसे आसान समाधान होगा:
str = '{"a":1}';
स्रोत :
यदि किसी प्रॉपर्टी को उद्धरण चिह्नों की आवश्यकता होती है, तो दोहरे उद्धरण चिह्नों का उपयोग किया जाना चाहिए। सभी संपत्ति नामों को दोहरे उद्धरण चिह्नों से घिरा होना चाहिए।
json = ( new Function("return " + jsonString) )();
Functionईवैल के बजाय उपयोग करने का प्रिंसिपल ध्वनि है, लेकिन बाकी सब गलत है। यह होना चाहिएvar json = Function("'use strict';return " + jsonString)()