解析/操纵奇怪的格式化json数组

时间:2015-05-25 11:55:47

标签: javascript regex json string single-quotes

我有以下破解的javascript json字符串

[ 'some string's', 'inside, array', 60.4, 10.3, '' ]

我想解析这个破碎的json字符串,从网页的脚本部分中删除到javascript数组中 - 但是你看到它不是有效的json。字符串是单引号,也可以在字符串中包含单引号。所以我需要用双引号替换字符串项周围的单引号,而不更改字符串中的单引号。

这里有正则魔法师吗?

更新: 字符串也可以包含逗号,项目也可以是数字。

提示: 查找分隔的字符串项可能有效的模式', '

1 个答案:

答案 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;
&#13;
&#13;

但是,请注意,修复JSON的最佳方法是将其修复到JSON提供程序的一侧。如果你有更复杂的JSON字符串,这个解决方案将需要增强。