将类似数组的字符串解析为数组

时间:2012-05-07 16:08:31

标签: javascript arrays json string

我有这个包含格式错误的JSON的JavaScript字符串,我想将它解析为它所代表的数组。字符串:

variable = [{ var1: 'value11', var12: 'value2', var3: 'value13' }, { var1: 'value21', var2: 'value22', var3: 'value23' }]

是否可以解析它以使它成为一个实际的数组?

先谢谢。

2 个答案:

答案 0 :(得分:2)

我假设variable =也作为字符串的一部分返回,所以如果我错了,请纠正我。

如果您使用的是JavaScript,则可以对其进行评估,然后再使用它。不幸的是,这确实意味着您仍然坚持使用该变量名称。

http://jsfiddle.net/2xTmh/

答案 1 :(得分:1)

如果您使用的是php,则可以使用正则表达式“修复”json字符串。这有效:

<?php 
$json = "variable = [{ var1: 'value11', var12: 'value2', var3: 'value13' }, { var1: 'value21', var2: 'value22', var3: 'value23' }]";
// replace 'variable =' with '"variable" :' and surround with curly braces
$json = preg_replace('/^(\S+)\s*=\s*([\s\S]*)$/', '{ "\1" : \2 }', $json);
// quote keys and change to double quotes
$json = preg_replace("/(\S+): '(\S+)'/", '"\1": "\2"', $json);
echo $json . "\n";

$data = json_decode($json, true);

print_r($data);
?>

输出:

{ "variable" : [{ "var1": "value11", "var12": "value2", "var3": "value13" }, { "var1": "value21", "var2": "value22", "var3": "value23" }] }
Array
(
    [variable] => Array
        (
            [0] => Array
                (
                    [var1] => value11
                    [var12] => value2
                    [var3] => value13
                )

            [1] => Array
                (
                    [var1] => value21
                    [var2] => value22
                    [var3] => value23
                )

        )

)