Parsing/manipulating 格式奇怪的 json 数组
Parsing/manipulating weirdly formated json array
我有以下损坏的 javascript json 字符串
[ 'some string's', 'inside, array', 60.4, 10.3, '' ]
我想将从网页的脚本部分抓取的这个损坏的 json 字符串解析为 javascript 数组 - 但如您所见,它无效 json .字符串是单引号的,字符串内也可以有单引号。所以我需要用双引号替换字符串项周围的单引号,而不更改字符串内的单引号。
这里有正则表达式魔术师吗?
更新:
字符串也可以包含逗号,项目也可以是数字。
提示:
寻找模式 ', '
来分隔字符串项可能有效。
假设您的 "bad" JSON 字符串总是以 [ '
开头并以 ' ]
结尾,我们可以先 "trim" 字符串,然后使用', '
.
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);
<div id="res"/>
但是,请注意,修复 JSON 的最佳方法是在 JSON 提供商方面进行修复。如果您有更复杂的 JSON 字符串,此解决方案将需要改进。
我有以下损坏的 javascript json 字符串
[ 'some string's', 'inside, array', 60.4, 10.3, '' ]
我想将从网页的脚本部分抓取的这个损坏的 json 字符串解析为 javascript 数组 - 但如您所见,它无效 json .字符串是单引号的,字符串内也可以有单引号。所以我需要用双引号替换字符串项周围的单引号,而不更改字符串内的单引号。
这里有正则表达式魔术师吗?
更新: 字符串也可以包含逗号,项目也可以是数字。
提示:
寻找模式 ', '
来分隔字符串项可能有效。
假设您的 "bad" JSON 字符串总是以 [ '
开头并以 ' ]
结尾,我们可以先 "trim" 字符串,然后使用', '
.
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);
<div id="res"/>
但是,请注意,修复 JSON 的最佳方法是在 JSON 提供商方面进行修复。如果您有更复杂的 JSON 字符串,此解决方案将需要改进。