【问题标题】:How to convert this String to JSON object in Javascript, when the string has single quote within the double quote当字符串在双引号内有单引号时,如何在Javascript中将此字符串转换为JSON对象
【发布时间】:2021-01-21 18:35:46
【问题描述】:

如果字符串只包含双引号,可以像下面这样解决-

var str=`{"name":"javascript"}`;
var jsonObj=JSON.parse(str) //Works

如果字符串只包含单引号,则可以如下解决-

var str = "{'result': ['def', 'abc', 'xyz']}";
str = str.replace(/'/g, '"');
var res = JSON.parse(str);
console.log(res.result);

但是我们如何转换下面的字符串,双引号里面有单引号-

var s=`{'error': "No such file or directory: '../FileSystem/3434-5433-124/'"} ` 

【问题讨论】:

    标签: javascript node.js json reactjs react-native


    【解决方案1】:

    这看起来不像是一个有效的字符串化 JSON。

    var s=`{'error': "No such file or directory: '../FileSystem/3434-5433-124/'"} ` 
    
    

    error 应该用双引号括起来。

    var s=`{"error": "No such file or directory: '../FileSystem/3434-5433-124/'"} ` 
    
    

    您可以使用 JSON.stringify 验证它

    JSON.stringify({
      error: "No such file or directory: '../FileSystem/3434-5433-124/'"
    })
    

    假设您使用的是有效的 JSON。您现在可以使用反斜杠转义单引号。

    var s = `{"error": "No such file or directory: '../FileSystem/3434-5433-124/'"}` 
    const parsed  = JSON.parse(s.replace(/\'/g, "\'"));
    console.log(parsed)

    【讨论】:

    • 是的,它不是有效的字符串化 JSON。实际上,该错误来自 NodeJS 应用程序的 python 衍生进程,我没有太多控制权。在 python catch 块中捕获的错误消息是我收到的。
    【解决方案2】:

    如果您知道唯一的问题是属性名称是单引号而不是 JSON 所需的双引号,您可以使用正则表达式将属性名称上的单引号替换为双引号。

    var s=`{'error': "No such file or directory: '../FileSystem/3434-5433-124/'"} ` 
    const regex = /(')(\S*)('):/g
    s = s.replace(regex, '"$2":')
    const workingJson = JSON.parse(s);
    

    应该做的伎俩。对于格式为(单引号)(文本)(单引号)(冒号)的字符串的任何部分,这将用双引号替换单引号,这很可能只是属性名称,但请记住,如果您的字符串遵循这种确切的格式,它也会将单引号替换为双引号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 2021-08-07
      • 2015-10-27
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多