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 に答える