Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用前斜杠解析json字符串-javascript_Javascript_Json_Jsonparser - Fatal编程技术网

使用前斜杠解析json字符串-javascript

使用前斜杠解析json字符串-javascript,javascript,json,jsonparser,Javascript,Json,Jsonparser,看起来很简单,但我想不出来 var str="[{name:\"House\",id:\"1\"},{name:\"House and Land\",id:\"5\"},{name:\"Land\",id:\"6\"},{name:\"Terrace\",id:\"11\"}]"; JSON.parse(str.replace(/\s/g, "").replace(/\//g, '')); 我无法将上面的字符串(来自第三方网站)转换为有效的json,这样我就可以在我这边迭代它 错误 VM530

看起来很简单,但我想不出来

var str="[{name:\"House\",id:\"1\"},{name:\"House and Land\",id:\"5\"},{name:\"Land\",id:\"6\"},{name:\"Terrace\",id:\"11\"}]";
JSON.parse(str.replace(/\s/g, "").replace(/\//g, ''));
我无法将上面的字符串(来自第三方网站)转换为有效的json,这样我就可以在我这边迭代它

错误

VM5304:1未捕获的语法错误:JSON中位置2处的意外标记n
在JSON.parse()处

JSON要求引用密钥。您的密钥似乎未加引号。因此,添加另一个
.replace
语句以将报价插入:

.replace(/(\w+):/g, '"$1":');

属性名称必须是双引号字符串;禁止使用尾随逗号

完整解决方案:

.replace(/(,|{)\s*(\w+)\s*:/g, '$1"$2":');

JSON要求引用键。您的密钥似乎未加引号。因此,添加另一个
.replace
语句以将报价插入:

.replace(/(\w+):/g, '"$1":');

属性名称必须是双引号字符串;禁止使用尾随逗号

完整解决方案:

.replace(/(,|{)\s*(\w+)\s*:/g, '$1"$2":');

您确定源字符串无效吗?它看起来像是一个JSON编码的值包含在另一个JSON编码的值中的结果。JSON需要引用索引或键。这不是有效的JSON,但对于
console.log(eval(str))
I'm with@Marty来说没问题-这对于调试工具中显示的有效JSON来说似乎非常熟悉。您是否实际拥有一个带有斜杠的字符串(即,您像
var string=…
一样使用它,就像您发布的一样?),或者它是从某种ajax/api调用返回的,并且斜杠出现在您的开发工具中?好的,我知道了-有人已经
JSON.stringify
-创建了一个已经有效的JSON字符串(这添加了正斜杠)现在您正试图解析它-这就是这里真正发生的事情。您确定源字符串无效吗?它看起来像是另一个JSON编码值中包含JSON编码值的结果。JSON要求引用索引或键这不是有效的JSON,但对于
console.log来说没有问题(eval(str))
我使用@Marty-这对于调试工具中显示的有效JSON似乎非常熟悉。您是否实际拥有一个带有斜杠的字符串(即,您像
var string=…
一样使用它?),或者它是从某种ajax/api调用返回的,斜杠出现在开发人员工具中?好的,我知道了-有人有
JSON.stringify
-创建了一个已经有效的JSON字符串(添加了正向斜杠),现在您正试图解析它-这就是这里真正发生的事情。