Подтвердить что ты не робот

JSON.parse неожиданный токен s

Почему это происходит, когда я делаю: -

JSON.parse('"something"')

он просто разбирает штраф, но когда я это делаю: -

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

это приводит к ошибке: -

Unexpected token s
4b9b3361

Ответ 1

Вы просите его разобрать текст JSON something (не "something"). Этот недопустимый JSON, строки должны быть в двойных кавычках.

Если вам нужен эквивалент первого примера:

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

Ответ 2

То, что вы передаете методу 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.

Ответ 3

Переменные (something) недействительны JSON, проверьте с помощью http://jsonlint.com/

Ответ 4

Поскольку JSON имеет строковый тип данных (это практически что-либо между " и "). Он не имеет типа данных, который соответствует something