Я только что получил это в консоли Chrome:JSON.parse разбирает выход JSON.stringify, но не сама строка
JSON.stringify(({wat:"\""}))
> "{"wat":"\""}"
JSON.parse(JSON.stringify(({wat:"\""})))
> Object {wat: """}
JSON.parse('{"wat":"\""}')
> VM34235:1 Uncaught SyntaxError: Unexpected string in JSON at position 9(…)
Скриншот:
JSON.parse
успешно разбирает при передаче выходной JSON.stringify({wat:"\""})
но бросает, когда пытаюсь eval JSON.parse('{"wat":"\""}')
.
Я звоню в махинации.
Посмотрите на строковое значение ' '{ "ват": "\" "} '. 'Это должно быть довольно ясно, то –
''{" ват ":" \ ""} === '{"wat": "" "}'; // true', вам нужно избежать вашей обратной косой черты –
Если вы посмотрите на вывод консоли (' "{" wat ":" \ ""} "') , вы можете видеть, что это значение не является допустимым строковым литералом, поскольку оно не отображает escape-последовательности. В противном случае это должно было бы выглядеть как '' {\ "wat \": \ "\\\" \ "}" '. Следовательно, вы не можете просто скопировать и вставить вывод в строковый литерал. Что показывает консоль, это строка ** value **. Это может стать более очевидным, если вы введете '' foo \ nbar'' в консоль. –