Menghuraikan Objek JSON dalam PHP dengan json_decode
Apabila cuba mendapatkan semula data cuaca daripada perkhidmatan web berformat JSON, anda mungkin menghadapi cabaran. Kod permintaan PHP biasa yang tidak berjaya:
$url = "http://www.worldweatheronline.com/feed/weather.ashx?q=schruns,austria&format=json&num_of_days=5&key=8f2d1ea151085304102710"; $json = file_get_contents($url); $data = json_decode($json, TRUE); echo $data[0]->weather->weatherIconUrl[0]->value;
Untuk memahami isu ini, mari kita periksa data JSON yang anda terima:
{ "data": { "current_condition": [...], "request": [...], "weather": [ { "date": "2010-10-27", "precipMM": "0.0", "tempMaxC": "3", "tempMaxF": "38", "tempMinC": "-13", "tempMinF": "9", "weatherCode": "113", "weatherDesc": [{ "value": "Sunny" }], "weatherIconUrl": [{ "value": "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png" }], "winddir16Point": "N", "winddirDegree": "356", "winddirection": "N", "windspeedKmph": "5", "windspeedMiles": "3" }, ... ] } }
Perhatikan bahawa data cuaca bersarang dalam objek "data". Oleh itu, untuk menghuraikan JSON dengan betul, anda perlu mengubah suai kod anda:
$url = 'http://www.worldweatheronline.com/feed/weather.ashx?q=schruns,austria&format=json&num_of_days=5&key=8f2d1ea151085304102710'; $content = file_get_contents($url); $json = json_decode($content, true); foreach ($json['data']['weather'] as $item) { print $item['date']; print ' - '; print $item['weatherDesc'][0]['value']; print ' - '; print '<img src="' . $item['weatherIconUrl'][0]['value'] . '" border="0" alt="" />'; print '<br>'; }
Menetapkan parameter kedua json_decode kepada benar memberikan anda tatasusunan, membolehkan anda mengakses data menggunakan pengindeksan tatasusunan. Sambungan JSONview Firefox juga boleh membantu menggambarkan struktur JSON dan memudahkan penghuraian.
Atas ialah kandungan terperinci Bagaimana Menghuraikan Data JSON Bersarang dengan Betul dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!