将包含“Array”的原始字符串转换为PHP Array或JSON

时间:2012-07-06 03:55:02

标签: php arrays json parsing

我的字符串看起来像Array,从其他网络服务中获取

[
    [
        [189, 'Brazil Serie A', 0, ''],
        [
            [1053230, 'Flamengo', 'Atletico Goianiense', '1.196', 10, '07/02/2012 04:30', 0, 9, 1, 0, '', 0]
        ],
        [0, [
            [10770901, 0, 5000.00],
            [1, 17988654, '-0.78', '0.70', '1.0', 1],
            [3, 17965783, '0.97', '0.93', '2.5-3'],
            [7, 17965787, '-0.89', '0.77', '0.50', 1],
            [9, 17965789, '0.70', '-0.82', '1.0']
        ]]
    ],
    [, , [0, [
        [10748028, 0, 3000.00],
        [1, 17965781, '0.85', '-0.93', '0.5-1', 1],
        [3, 17988655, '0.79', '-0.89', '2.50']
    ]]]
]

是否可以解析为PHP Array或转换为JSON

2 个答案:

答案 0 :(得分:2)

正如ctrahey所指出的,单引号需要换成双引号才能成为有效的JSON。在他们之前没有任何内容的逗号也必须去。

// quote to double quote                
$input = str_replace("'", '"', $input);                 

// remove empty commas
$input = preg_replace('/,\s*,/', ',', $input);          
$input = preg_replace('/\[\s*,/', '[', $input);

$output = json_decode($input)); 

我试图保持简单,并在中建立一点灵活性。

答案 1 :(得分:1)

嗯,乍一看......如果你将单引号转换成双引号,你已经有了JSON。我切换了大约一半,通过这一点确认没问题。

有关详细信息,请参阅the spec,但这实际上只是一堆数组。字符串的双引号要求在那里清楚地说明,其余的看起来没问题。