用双qoute断点解析字符串

时间:2015-07-09 06:24:19

标签: javascript json typescript

我的问题与此问题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);
    }
});

感谢您的帮助。

3 个答案:

答案 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\"}' . 

双引号前面的反斜杠使它成为字符串的一部分而不是特殊字符。这称为转义角色。