Javascript 解析JSON,其中字符串在属性值的开头有撇号-在引号旁边
我无法将字符串解析为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”属性的字符串值 到
紧跟在引号字符之后
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
}];