【问题标题】:Parse string with double qoute breaks解析带双引号的字符串
【发布时间】:2015-07-09 06:24:18
【问题描述】:

我的问题与jQuery.parseJSON single quote vs double quote 这个问题有关。 关于这个问题有很多话题,但我仍然不知道干净的解决方案。

我没有 Jquery,我正在使用 TypeScript(不是 JavaScript)。但是其他的都是一样的。

我的问题是:如果我有带双引号的字符串怎么办?

如何解决这个问题? 有没有办法将其转换为有效的字符串类型?

var obj = JSON.parse(data);

如果json字符串带有双引号,我会得到错误。

SyntaxError: Unexpected token

整个代码是:

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);
    }
});

感谢您的帮助。

【问题讨论】:

  • 你可以试试这个JSON.stringify(jobj),它会自动将单引号转换成双引号。
  • @SASIKUMARS 你读过这个问题吗?他正在从一个文件老兄那里获取他的数据......
  • 是的,不管它的来源是什么,这都不是问题。 @ B.凯默
  • @SASIKUMARS 他没有 JSON 对象,所以他不能使用 JSON.stringify()。

标签: javascript json typescript


【解决方案1】:

在将您的字符串存储到 JSON 之前,用 \" 替换所有“实例”

var str='hello "Rajat Bhardwaj"';
str=str.replace(/"/g,'\\"');
// Now push it into JSON

【讨论】:

    【解决方案2】:

    您需要替换字符串中所有出现的单引号。您可以通过简单地使用 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

    【讨论】:

      【解决方案3】:

      您需要使用反斜杠 \"blah blah \" 转义引号或编写您的自定义消毒剂。

      data = '{\"text\": \"This is json string with double quotes\"}' . 
      

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

      【讨论】:

      • 如何转义引号?你能写出例子吗?
      • 假设您的 data = '{\"text\": \"This is json string with double quotes\"}' 。双引号前的反斜杠使其成为字符串的一部分,而不是特殊字符。
      猜你喜欢
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多