Почему это происходит, когда я делаю: -
JSON.parse('"something"')
он просто разбирает штраф, но когда я это делаю: -
var m = "something";
JSON.parse(m);
это приводит к ошибке: -
Unexpected token s
Почему это происходит, когда я делаю: -
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.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.
Переменные (something
) недействительны JSON, проверьте с помощью http://jsonlint.com/
Поскольку JSON имеет строковый тип данных (это практически что-либо между "
и "
). Он не имеет типа данных, который соответствует something