我有以下破解的javascript json字符串
[ 'some string's', 'inside, array', 60.4, 10.3, '' ]
我想解析这个破碎的json字符串,从网页的脚本部分中删除到javascript数组中 - 但是你看到它不是有效的json。字符串是单引号,也可以在字符串中包含单引号。所以我需要用双引号替换字符串项周围的单引号,而不更改字符串中的单引号。
这里有正则魔法师吗?
更新: 字符串也可以包含逗号,项目也可以是数字。
提示:
查找分隔的字符串项可能有效的模式', '
。
答案 0 :(得分:1)
假设你的"坏" JSON字符串始终以[ '
开头,以' ]
结尾,我们可以先#34;修剪"字符串,然后使用', '
进行拆分。
var str = "[ 'some string's', 76, 'inside, array', '', 60.4, 10.3, '', 56 ]";
str = str.replace(/^\[ | \]$/g, '')
var re = /'(.*?)'(?=,|$)|(\d+(?:\.\d+)?)(?=,|$)/g;
var m;
arr = [];
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
if (m[1] != undefined) {
arr.push(m[1]);
document.getElementById("res").innerHTML += m[1] + "<br/>";
}
else
{
arr.push(m[2]);
document.getElementById("res").innerHTML += m[2] + "<br/>";
}
}
alert(arr);
&#13;
<div id="res"/>
&#13;
但是,请注意,修复JSON的最佳方法是将其修复到JSON提供程序的一侧。如果你有更复杂的JSON字符串,这个解决方案将需要增强。