C#で天気予報のWeb API(Weather Hacks)を使ってみる~コンソールアプリケーション
概要
夏なので毎日暑い日が続きます。今日の天気と最高気温が気になるので、Livedoorの気象データ配信サービス「Weather Hacks」のお天気Webサービス(Livedoor Weather Web Service / LWWS)から情報を取得し、コンソールに出力してみます。
API仕様の詳細は以下から。weather.livedoor.com
Q&Aによると商用利用は不可です。
環境
Microsoft Visual Studio Community 2013
実装
東京の天気を取得します。
コンソールアプリなので引数でいろいろ制御してもいいですね!
using Codeplex.Data; using System; using System.Net; using System.Text; namespace ConsoleApplication1 { class Program { const string NO_VALUE = "---"; static void Main(string[] args) { Console.WriteLine(GetWeatherText()); Console.ReadKey(); } private static string GetWeatherText() { var url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=130010"; var req = WebRequest.Create(url); using (var res = req.GetResponse()) using (var s = res.GetResponseStream()) { dynamic json = DynamicJson.Parse(s); //天気(今日) dynamic today = json.forecasts[0]; string dateLabel = today.dateLabel; string date = today.date; string telop = today.telop; var sbTempMax = new StringBuilder(); dynamic todayTemperatureMax = today.temperature.max; if (todayTemperatureMax != null) { sbTempMax.AppendFormat("{0}℃", todayTemperatureMax.celsius); } else { sbTempMax.Append(NO_VALUE); } var sbTempMin = new StringBuilder(); dynamic todayTemperatureMin = today.temperature.min; if (todayTemperatureMin != null) { sbTempMin.AppendFormat("{0}℃", todayTemperatureMin.celsius); } else { sbTempMin.Append(NO_VALUE); } //天気概況文 var situation = json.description.text; //Copyright var link = json.copyright.link; var title = json.copyright.title; return string.Format("{0}\n天気 {1}\n最高気温 {2}\n最低気温 {3}\n\n{4}\n\n{5}\n{6}", date, telop, sbTempMax.ToString(), sbTempMin.ToString(), situation, link, title ); } } } }
Weather Hacksのサイトに以下の記述がある通り、JSONデータを返してくれます。
Weather Hacksでは、今日・明日・あさっての天気予報をJSONデータで取得できるWebサービス(Livedoor Weather Web Service / LWWS)を提供しています。
このJSONデータのパースはDynamicJsonが簡単そうだったので使ってみました。
Package Manager Consoleで以下を実行するとインストールされます。
PM> Install-Package DynamicJson
結果
今日は少し涼しいですね!