javascript - JSON.parse अनपेक्षित टोकन s




(4)

ऐसा क्यों है कि जब भी मैं:

JSON.parse('"something"')

यह ठीक है लेकिन जब मैं करता हूँ: -

var m = "something";
JSON.parse(m);

यह मुझे एक त्रुटि कहती है: -

Unexpected token s

आप इसे JSON पाठ ( "something" नहीं "something" ) को पार्स करने के लिए कह रहे हैं। यह अमान्य JSON है, स्ट्रिंग्स को दोहरे उद्धरण चिह्नों में होना चाहिए।

यदि आप अपने पहले उदाहरण के बराबर चाहते हैं:

var s = '"something"';
var result = JSON.parse(s);

क्योंकि JSON में एक स्ट्रिंग डेटा प्रकार है (जो व्यावहारिक रूप से " और " बीच कुछ भी है)। इसमें एक डेटा प्रकार नहीं है जो किसी something मेल खाता something


मान्य json स्ट्रिंग में डबल उद्धरण होना चाहिए।

JSON.parse({"u1":1000,"u2":1100})       // will be ok

कोई उद्धरण त्रुटि का कारण नहीं है

JSON.parse({u1:1000,u2:1100})    
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2

एकल उद्धरण त्रुटि का कारण बनता है

JSON.parse({'u1':1000,'u2':1100})    
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2

आपको https://jsonlint.com पर json string मान्य करनी चाहिए


स्ट्रिंग के लिए रैपिंग कोट्स को हटाने के बाद आप JSON.parse मेथड के लिए क्या कर रहे हैं, एक वैध JSON होना चाहिए।

इसलिए something मान्य JSON नहीं है, लेकिन "something" है।

एक वैध JSON है -

JSON = null
    /* boolean literal */
    or true or false
    /* A JavaScript Number Leading zeroes are prohibited; a decimal point must be followed by at least one digit.*/
    or JSONNumber
    /* Only a limited sets of characters may be escaped; certain control characters are prohibited; the Unicode line separator (U+2028) and paragraph separator (U+2029) characters are permitted; strings must be double-quoted.*/
    or JSONString

    /* Property names must be double-quoted strings; trailing commas are forbidden. */
    or JSONObject
    or JSONArray

उदाहरण -

JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null 
JSON.parse("'foo'"); // error since string should be wrapped by double quotes

आप JSON देखना चाह सकते हैं।





json