Livedoor Weather HacksがRSSでのデータ提供を終えるので、JSON形式で取得する方法を考える。

表題の通りLivedoor Weather HacksがRSS形式でのデータ提供を終了するようです。
告知では3月下旬となっていますが、4月2日までは利用できたようです。

livedoor天気ならびにWeather Hacksに関するお知らせ

こうしたAPIのデータ提供形式はAjaxの関係で、今後はXML形式ではなくJSON形式に移行していくのでしょう。
少し前のPHPではJSONを扱おうと思ったらFrameworkを導入するかPEARパッケージを導入しなければなりませんでしたが、PHP5.2以降では標準関数にjson_decode()json_encode()が組み込まれましたので、だいぶ楽になりました。

さっそくPHPを使いLivedoor Weather HacksからJSONを使ってデータをいじってみたいと思います。

[php]
$AreaId = ‘120010’; //千葉県 千葉
$URL = ‘http://weather.livedoor.com/forecast/webservice/json/v1?city=’.$AreaId;
$JSON = file_get_contents($URL);
$objJSON = json_decode($JSON); //json_decodeの返り値はクラス形式です。

//お天気を知りたい日付をY/m/d形式で$TrgDateに入れてあります。

//今日のお天気のデータ
if($TrgDate == date(“Y/m/d”, time())){
$Data = $objJSON->forecasts[0];
}

//明日のお天気のデータ
if($TrgDate == date(“Y/m/d”, strtotime(“+1 day”))){
$Data = $objJSON->forecasts[1];
}

//明後日のお天気のデータ
if($TrgDate == date(“Y/m/d”, strtotime(“+2 day”))){
$Data = $objJSON->forecasts[2];
}

$Weather = $Data->telop; //天気
$Min = $Data->temperature->min->celsius; //最低気温
$Max = $Data->temperature->max->celsius; //最高気温
[/php]

天気と最高気温、最低気温を取得してみました。
その他にもお天気のアイコンなどいくつかの情報を取得できるので、用途に応じて利用することができます。

ちなみに$objJSONをprint_r()したものはこちら。

stdClass Object
(
    [pinpointLocations] => Array
        (
            [0] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1210000
                    [name] => 千葉市
                )

            [1] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1220300
                    [name] => 市川市
                )

            [2] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1220400
                    [name] => 船橋市
                )

            [3] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1220700
                    [name] => 松戸市
                )

            [4] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1220800
                    [name] => 野田市
                )

            [5] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1221100
                    [name] => 成田市
                )

            [6] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1221200
                    [name] => 佐倉市
                )

            [7] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1221600
                    [name] => 習志野市
                )

            [8] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1221700
                    [name] => 柏市
                )

            [9] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1221900
                    [name] => 市原市
                )

            [10] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1222000
                    [name] => 流山市
                )

            [11] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1222100
                    [name] => 八千代市
                )

            [12] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1222200
                    [name] => 我孫子市
                )

            [13] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1222400
                    [name] => 鎌ケ谷市
                )

            [14] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1222700
                    [name] => 浦安市
                )

            [15] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1222800
                    [name] => 四街道市
                )

            [16] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1223000
                    [name] => 八街市
                )

            [17] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1223100
                    [name] => 印西市
                )

            [18] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1223200
                    [name] => 白井市
                )

            [19] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1223300
                    [name] => 富里市
                )

            [20] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1232200
                    [name] => 酒々井町
                )

            [21] => stdClass Object
                (
                    [link] => http://weather.livedoor.com/area/forecast/1232900
                    [name] => 栄町
                )

        )

    [link] => http://weather.livedoor.com/area/forecast/120010
    [forecasts] => Array
        (
            [0] => stdClass Object
                (
                    [dateLabel] => 今日
                    [telop] => 晴のち曇
                    [date] => 2013-04-04
                    [temperature] => stdClass Object
                        (
                            [min] => 
                            [max] => stdClass Object
                                (
                                    [celsius] => 21
                                    [fahrenheit] => 69.8
                                )

                        )

                    [image] => stdClass Object
                        (
                            [width] => 50
                            [url] => http://weather.livedoor.com/img/icon/5.gif
                            [title] => 晴のち曇
                            [height] => 31
                        )

                )

            [1] => stdClass Object
                (
                    [dateLabel] => 明日
                    [telop] => 曇り
                    [date] => 2013-04-05
                    [temperature] => stdClass Object
                        (
                            [min] => stdClass Object
                                (
                                    [celsius] => 12
                                    [fahrenheit] => 53.6
                                )

                            [max] => stdClass Object
                                (
                                    [celsius] => 19
                                    [fahrenheit] => 66.2
                                )

                        )

                    [image] => stdClass Object
                        (
                            [width] => 50
                            [url] => http://weather.livedoor.com/img/icon/8.gif
                            [title] => 曇り
                            [height] => 31
                        )

                )

            [2] => stdClass Object
                (
                    [dateLabel] => 明後日
                    [telop] => 曇のち雨
                    [date] => 2013-04-06
                    [temperature] => stdClass Object
                        (
                            [min] => 
                            [max] => 
                        )

                    [image] => stdClass Object
                        (
                            [width] => 50
                            [url] => http://weather.livedoor.com/img/icon/13.gif
                            [title] => 曇のち雨
                            [height] => 31
                        )

                )

        )

    [location] => stdClass Object
        (
            [city] => 千葉
            [area] => 関東
            [prefecture] => 千葉県
        )

    [publicTime] => 2013-04-04T11:00:00+0900
    [copyright] => stdClass Object
        (
            [provider] => Array
                (
                    [0] => stdClass Object
                        (
                            [link] => http://tenki.jp/
                            [name] => 日本気象協会
                        )

                )

            [link] => http://weather.livedoor.com/
            [title] => (C) LINE Corporation
            [image] => stdClass Object
                (
                    [width] => 118
                    [link] => http://weather.livedoor.com/
                    [url] => http://weather.livedoor.com/img/cmn/livedoor.gif
                    [title] => livedoor 天気情報
                    [height] => 26
                )

        )

    [title] => 千葉県 千葉 の天気
    [description] => stdClass Object
        (
            [text] =>  日本の東には発達した低気圧があって東北東に進んでいます。一方、西か
ら高気圧が本州付近に張り出してきました。

 現在、関東甲信地方は、おおむね晴れています。

 今日は、西から高気圧におおわれますが、関東地方の南岸は弱い気圧の谷
となる見込みです。
 このため、千葉県では晴れ夜は曇りでしょう。

 明日も、引き続き高気圧におおわれますが、関東地方の南岸は弱い気圧の
谷となるでしょう。高気圧は、日本海から本州の東海上に移動する見込みで
す。
 このため、千葉県では、北西部と南部は曇りで雨の降る所があり、北東部
は曇りで明け方は一時雨でしょう。

 太平洋沿岸では、今日は、波・うねりが高いでしょう。明日は、波・うね
りが高いでしょ。船舶等は注意して下さい。

<天気変化等の留意点>
 今日は、波・うねりの高い所がある見込みです。海岸での作業に注意して
下さい。
            [publicTime] => 2013-04-04T10:42:00+0900
        )

)
スポンサーリンク
レクタングル大




フォローする

スポンサーリンク
レクタングル大