Javascript 解析JSON,其中字符串在属性值的开头有撇号-在引号旁边

Javascript 解析JSON,其中字符串在属性值的开头有撇号-在引号旁边,javascript,json,Javascript,Json,我无法将字符串解析为JSON对象。麻烦的方面有两方面: 有一个短语被引号包围;及 该短语出现在字符串的最开头-因此 紧跟在引号字符之后 我有一些服务器代码,它将以下内容呈现到我的页面中,并呈现到内联脚本元素中: var str = '[{"Id":null,"Name":"\"A gamma\" bla bla rest of string","Code":null,"OtherBits":null,"IsActive":true,}]'; 因此您可以看到,问题是“Name”属性的字符串值 到

我无法将字符串解析为JSON对象。麻烦的方面有两方面:

  • 有一个短语被引号包围;及
  • 该短语出现在字符串的最开头-因此
    紧跟在引号字符之后
  • 我有一些服务器代码,它将以下内容呈现到我的页面中,并呈现到内联脚本元素中:

    var str = '[{"Id":null,"Name":"\"A gamma\" bla bla rest of string","Code":null,"OtherBits":null,"IsActive":true,}]';
    
    因此您可以看到,问题是“Name”属性的字符串值

    到目前为止,我唯一有效的方法如下,但显然它是硬编码的,并且只适用于该示例:

    var str = '[{"Id":null,"Name":"\"A gamma\" bla bla rest of string","Code":null,"OtherBits":null,"IsActive":true,}]';
    var escapedString = str.replace('"\"', '"\\"');
    var escapedString2 = escapedString.replace('a\"', 'a\\"');
    var existingDataForItems = JSON.parse(escapedString2);
    
    我需要概括一下

    请注意,您可能会认为它非常简单:

    var escapedString = str.replace('\"', '\\"');
    

    事实并非如此。这是行不通的

    正如我在评论中提到的,只需分配一个对象/数组文本,而不是试图将其包装成字符串并对其进行解析

    从评论来看,您似乎在使用PHP,因此假设您有一个服务器端数组
    $data

    var existingDataForItems = <?= json_encode($data) ?>;
    

    不是您当前的问题,但是您的JSON在第一个数组项的末尾也有一个尾随逗号。然后问题的根源是在页面上呈现该字符串。解决这个问题而不是解决它。服务器端脚本不只是呈现
    var obj=[{“Id”的任何原因:null,
    。如果是PHP,它看起来像
    var obj=;
    。实际上不需要执行任何字符串parsing@Phil是的,这是有效的。我看不到树上的树木。继承了代码库。谢谢。做出答案,并将如此涂油。澄清一下:问题不在于JSON。问题在于你是putting字符串文字中的JSON。字符串文字有自己的一组特殊字符。因此,您必须先转义要在字符串文字中使用的JSON。简化示例:
    [“”]
    是有效的JSON。放入字符串文字中,我们有一个语法错误:
    “[”]“
    。但是,正如前面所说的,实际上没有必要首先将其放入字符串文本中。
    var existingDataForItems = [{
        "Id": null,
        "Name": "\"A gamma\" bla bla rest of string",
        "Code": null,
        "OtherBits": null,
        "IsActive": true
    }];