Reputation: 5823
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
Upvotes: 53
Views: 216514
Reputation: 5525
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
You must valid json string at https://jsonlint.com
Upvotes: 4
Reputation: 3170
What 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.
Upvotes: 20
Reputation: 1074295
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);
Upvotes: 68
Reputation: 943569
Because JSON has a string data type (which is practically anything between "
and "
). It does not have a data type that matches something
Upvotes: 2
Reputation:
Variables (something
) are not valid JSON, verify using http://jsonlint.com/
Upvotes: 7