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日間の「日時」「天気」「気温」を出力する天気予報のプログラムを作成しなさい。
課題
為替レートを取得することができるAPI「exchangeratesapi.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