1

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

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

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

4

2 回答 2

2

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

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

http://jsfiddle.net/2xTmh/

于 2012-05-07T16:16:16.533 回答
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
                )

        )

)
于 2012-05-07T16:29:57.420 回答