PHP为json_decode的数组添加引号

时间:2012-03-26 23:31:31

标签: php json preg-split

我正在寻找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可以工作?

1 个答案:

答案 0 :(得分:4)

您的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'];