Я ищу 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 работал?
Ваш 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'];