Why is it that whenever I do :-
JSON.parse('"something"') it just parses fine but when I do:-
var m = "something"; JSON.parse(m); it gives me an error saying:-
Unexpected token s 35 Answers
You're asking it to parse the JSON text something (not "something"). That's invalid JSON, strings must be in double quotes.
If you want an equivalent to your first example:
var s = '"something"'; var result = JSON.parse(s); 3What you are passing to JSON.parse method must be a valid JSON after removing the wrapping quotes for string.
so something is not a valid JSON but "something" is.
A valid JSON is -
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 Examples -
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 You may want to look JSON.
0Variables (something) are not valid JSON, verify using
valid json string must have double quote.
JSON.parse({"u1":1000,"u2":1100}) // will be ok no quote cause error
JSON.parse({u1:1000,u2:1100}) // error Uncaught SyntaxError: Unexpected token u in JSON at position 2 single quote cause error
JSON.parse({'u1':1000,'u2':1100}) // error Uncaught SyntaxError: Unexpected token u in JSON at position 2 Because JSON has a string data type (which is practically anything between " and "). It does not have a data type that matches something