我的问题与此问题jQuery.parseJSON single quote vs double quote有关。 关于这个问题有很多主题,但我还是不知道干净的解决方案。
我没有Jquery,我正在使用TypeScript(而不是JavaScript)。但其他人都是一样的。
我的问题是:如果我有双qoute字符串怎么办?
如何解决此问题? 有没有办法在有效的字符串类型中转换它?
var obj = JSON.parse(data);
如果json字符串是double qoute,我将收到错误。
SyntaxError:意外的令牌
整个代码是:
fs.readFile(templatePath, 'utf8', (err: Error, data: Object) => {
if (err) {
res.send(500);
}
try {
var obj = JSON.parse(data);
res.json(obj);
} catch (e) {
res.send(500);
}
});
感谢您的帮助。
答案 0 :(得分:2)
在将字符串存储到JSON之前,请替换“with \”
的所有实例var str='hello "Rajat Bhardwaj"';
str=str.replace(/"/g,'\\"');
// Now push it into JSON
答案 1 :(得分:1)
您需要替换字符串中单个引号的所有出现。您只需使用 String.replace() 功能即可完成此操作。
你可以编写一个可以重复使用的函数,如果你需要它可以重复使用它:
function replaceAll(find, replace, str) {
return str.replace(new RegExp(find, 'g'), replace);
}
并称之为:
var str = replaceAll("'", "\"", data);
var obj = JSON.parse(str);
有关更多信息,请查看以下答案:Replacing all occurrences of a string in JavaScript
答案 2 :(得分:0)
您需要使用反斜杠\"blah blah \"
来转义引号或编写自定义清洁剂。
data = '{\"text\": \"This is json string with double quotes\"}' .
双引号前面的反斜杠使它成为字符串的一部分而不是特殊字符。这称为转义角色。