我正在寻找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可以工作?
答案 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'];