Web API 続き(OpenWeatherMap 天気予報)

(ブログ記事の一覧は「こちら」)

前回はOpenWeatherMap APIを使用して「現在の天気(Current Weather Data)」の情報を取得するプログラムを作成しました。

今回は「天気予報」の情報を取得するプログラムを作成します。

5 Day / 3 Hour Forecast(3時間ごとの5日間の天気予報)

https://api.openweathermap.org/data/2.5/forecast?q=tokyo&appid=xxxxxxxxxxxxxxxxxxxxxxxx

今回も以下のオプションを追加することが可能です。

  • units=metric (普段使っている温度の単位で表示させる)
  • lang=ja (結果の一部が日本語で取得できる)

天気予報の出力結果の例

OpenWeatherMap APIによる、「東京」の天気予報の出力結果の例です。

{
    "cod": "200",
    "message": 0,
    "cnt": 40,
    "list": [
        {
            "dt": 1600084800,
            "main": {
                "temp": 24.81,
                "feels_like": 24.46,
                "temp_min": 24.62,
                "temp_max": 24.81,
                "pressure": 1011,
                "sea_level": 1011,
                "grnd_level": 1008,
                "humidity": 76,
                "temp_kf": 0.19
            },
            "weather": [
                {
                    "id": 501,
                    "main": "Rain",
                    "description": "moderate rain",
                    "icon": "10n"
                }
            ],
            "clouds": {
                "all": 82
            },
            "wind": {
                "speed": 5.97,
                "deg": 81
            },
            "visibility": 10000,
            "pop": 0.97,
            "rain": {
                "3h": 4.57
            },
            "sys": {
                "pod": "n"
            },
            "dt_txt": "2020-09-14 12:00:00"
        },

...(略)

        {
            "dt": 1600506000,
            "main": {
                "temp": 27.16,
                "feels_like": 27.39,
                "temp_min": 27.16,
                "temp_max": 27.16,
                "pressure": 1012,
                "sea_level": 1012,
                "grnd_level": 1008,
                "humidity": 61,
                "temp_kf": 0
            },
            "weather": [
                {
                    "id": 500,
                    "main": "Rain",
                    "description": "light rain",
                    "icon": "10n"
                }
            ],
            "clouds": {
                "all": 92
            },
            "wind": {
                "speed": 4.28,
                "deg": 104
            },
            "visibility": 10000,
            "pop": 0.26,
            "rain": {
                "3h": 0.18
            },
            "sys": {
                "pod": "n"
            },
            "dt_txt": "2020-09-19 09:00:00"
        }
    ],
    "city": {
        "id": 1850144,
        "name": "Tokyo",
        "coord": {
            "lat": 35.6895,
            "lon": 139.6917
        },
        "country": "JP",
        "population": 12445327,
        "timezone": 32400,
        "sunrise": 1600028587,
        "sunset": 1600073448
    }
}

JSONデータのパース(解析)

以下は、天気予報の結果について、全ての時間(3時間ごとの5日間)の「日時」を出力するサンプルです。

   // JSONオブジェクトのインスタンス作成
    JSONObject jsonObj = new JSONObject(sbSentence.toString());

    JSONArray jsonArray = jsonObj.getJSONArray("list");

    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject jsonObjList = jsonArray.getJSONObject(i);
        // 日時
        System.out.println(jsonObjList.getString("dt_txt"));
    }

練習課題1

「東京」の天気予報の結果について、全ての時間(3時間ごとの5日間)の「日時」「天気」「気温」を出力するプログラムを作成しなさい。

練習課題2

「あなたの国の都市」の、午前9時の5日間の「日時」「天気」「気温」を出力する天気予報のプログラムを作成しなさい。

課題

為替レートを取得することができるAPIexchangeratesapi.io」を利用して、最新の為替レートの一覧を表示するプログラムを作成しなさい。

https://api.exchangeratesapi.io/latest

出力結果の例です。

{
    "rates": {
        "CAD": 1.5493,
        "HKD": 9.1443,
        "ISK": 163.2,
        "PHP": 57.268,
        "DKK": 7.443,
        "HUF": 356.83,
        "CZK": 27.177,
        "AUD": 1.6357,
        "RON": 4.8727,
        "SEK": 10.3933,
        "IDR": 17378.69,
        "INR": 86.476,
        "BRL": 6.5268,
        "RUB": 90.765,
        "HRK": 7.5713,
        "JPY": 124.41,
        "THB": 36.754,
        "CHF": 1.0742,
        "SGD": 1.6011,
        "PLN": 4.481,
        "BGN": 1.9558,
        "TRY": 9.282,
        "CNY": 7.9578,
        "NOK": 10.7925,
        "NZD": 1.7744,
        "ZAR": 19.481,
        "USD": 1.1799,
        "MXN": 25.073,
        "ILS": 3.9933,
        "GBP": 0.90598,
        "KRW": 1355.3,
        "MYR": 4.893
    },
    "base": "EUR",
    "date": "2020-10-12"
}
参考

上記の例は、EUR(ユーロ)を基準とした場合です。日本円を基準とする場合は、以下で実行します。

https://api.exchangeratesapi.io/latest?base=JPY