4

我正在寻找 json_decode 一个字符串,但遇到了数组元素没有引号的问题。

JSON

{"Status":"DISPUTED","GUID":[]}
{"Status":"CONFIRMED","GUID":[G018712, G017623]}

PHP

$json = '{"Status":"CONFIRMED","GUID":[G018712,G017623]}';
$a = json_decode($json, true);
print $a['Status'];

结果

上面的 php 打印不会显示任何内容,因为数组中的数字混合了字母,而 json_decode 不喜欢它。您将如何向每个数组项添加字符串,以便 json_decode 起作用?

4

1 回答 1

3

json的无效。它应该是 -

$json = '{"Status":"CONFIRMED","GUID":["G018712","G017623"]}';

或者

$json = '{Status:"CONFIRMED",GUID:["G018712","G017623"]}';

您可以使用以下方法轻松修复它 -

$json = preg_replace('/(?<!")(?<!\w)(\w+)(?!")(?!\w)/', '"$1"', $json);

完整示例

$json = '{"Status":"CONFIRMED","GUID":[G018712,G017623]}{"Status":"CONFIRMED","GUID":[018712,a017623]}';
// fix json
$json = preg_replace('/(?<!")(?<!\w)(\w+)(?!")(?!\w)/', '"$1"', $json);
$a = json_decode($json, true);
print $a['Status'];
于 2012-03-26T23:40:32.887 回答