json_decode を使用した PHP での JSON オブジェクトの解析
JSON 形式の Web サービスから気象データを取得しようとすると、問題が発生する可能性があります。成功しない一般的な PHP リクエスト コード:
$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;
問題を理解するために、受信した JSON データを調べてみましょう:
{ "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" }, ... ] } }
天気データがネストされていることに注意してください。 「データ」オブジェクト。したがって、JSON を正しく解析するには、コードを変更する必要があります。
$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>'; }
json_decode の 2 番目のパラメーターを true に設定すると、配列が得られ、配列インデックスを使用してデータにアクセスできるようになります。 JSONview Firefox 拡張機能は、JSON 構造を視覚化し、解析を簡素化するのにも役立ちます。
以上がPHP でネストされた JSON データを適切に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。