Поскольку формат JSON указывает, что одиночные кавычки не должны быть экранированы, большинство библиотек (или даже собственный анализатор JSON) завершатся сбоем, если в них есть экранированные одинарные кавычки.Теперь это обычно не проблема, так как большую часть времени вы делаете XHR, который выбирает некоторые данные, отформатированные как JSON, и используете responseText, который содержит вашу строку JSON, которую вы можете затем проанализировать и т. Д.
В этом конкретном случаеВ этой ситуации у меня есть строка JSON, которая хранится в базе данных в виде текста ... поэтому база данных содержит что-то вроде {"property":"value"}
, и я хочу вывести ее как часть HTML-страницы, созданной сервером, чтобы код JavaScript на этой странице выгляделчто-то вроде этого:
var x = '{"property":"value"}';
Теперь, если строка JSON в базе данных содержит одинарную кавычку, подобную этой:
{"property":"val'ue"}
Тогда мне нужно ее избежать, иначе я никогда не смогучтобы использовать его как строку:
console.clear();
var obj = {prop:"val'ue"};
var str = JSON.stringify(obj);
console.log("JSON string is %s",str);
console.dir(JSON.parse(str)); //No problem here
//This obviously can't work since the string is closed and it causes an invalid script
//console.dir(JSON.parse('{prop:"val'ue"}'));
//so I need to escape it to use a literal JSON string
console.dir(JSON.parse('{"prop":"val\'ue"}'));
Тогда возникает вопрос, почему {"prop":"val\'ue"}
не считается допустимой строкой JSON?