Эта проблема вызвана механизмом экранирования из двух строк: один из JS, а другой из JSON.
Комбинация символа обратной косой черты в сочетании с другим следующим символом используется для представления одного символа , который не может быть представлен иным образом в строке.
'\\' 'означает' \ 'и т. д.
Этот механизм экранирования имеет место до того, как JSON.parse () заработает.
Например,
var parsedObj = JSON.parse('{"sentence": "It is one backslash(\\\\)"}');
console.log(parsedObj.sentence);
>>>"It is one backslash(\)"
С точки зрения строкового генератора, он передает четыре люфта '\' в интерпретатор JavaScript.
С точки зрения интерпретатора JavaScript, он интерпретирует есть две зазоры (\), поскольку каждая последовательность '\\' будет интерпретироваться как одна '\'.
С точки зрения синтаксического анализатора JSON, он получает две обратной засветки (\\), а правила перехода на строковые значения JSON будут анализировать его как один '\', который является выходным результатом.
Объясните вам первый код:
var testJson = '{"result": ["lunch", "\"Show\""] }';
//The real string after sequence escaping in to JS is
//'{"result": ["lunch", ""Show""] }'
//which is passed into the JSON.parse.
//Thus, it breaks the JSON grammar and generates an error
var tags = JSON.parse(testJson);
alert (tags.result[1]);