JavaScriptでやった覚えがあったぐらいでしたが。。
C#だとこんな感じみたいです。
今回はlivedoorから提供されているWeather Hacks
のAPIを使用する。まずは東京のお天気情報のリクエストURLを叩いてレスポンスを確認しよう。
http://weather.livedoor.com/forecast/webservice/json/v1?city=130010
1,Visual Studioで新規コンソールアプリプロジェクトを作成したら、まずHttp通信ができるようする。
参照を右クリックで追加
2,開いたメニューの検索窓にHttpと入力し、System.Net.Httpを選択し、OKボタンを押す
3,Jsonパースができるようにする。こんどはパッケージを右クリック。
Manage NuGet Packages…をクリック
4,開いたメニューの検索窓にJsonと入力し、Newtonsoft.Jsonにチェックをいれてパッケージを追加を押す
Program.cs
using System;
using System.Net.Http;
using Newtonsoft.Json.Linq;
namespace WeatherApp {
class MainClass {
public static void Main(string[] args) {
//WebAPIのURL
string url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=130010";
//HttpClientインスタンス作成(using System.Net.Http;を忘れないこと)
HttpClient client = new HttpClient();
//Get通信して結果を文字列として取得
string result = client.GetStringAsync(url).Result;
//表示
//Console.WriteLine(result);
//今回はルートが{で始まるオブジェクトなのでJObject.Parse,ルートが配列の場合はJArray.Parseを用いる
//(using Newtonsoft.Json.Linq;を忘れないこと)
JObject jobj = JObject.Parse(result);
//表示してみる
Console.WriteLine(jobj);
}
}
}
これを三日のみ出す場合
Program.cs
using System;
using System.Net.Http;
using Newtonsoft.Json.Linq;
namespace WeatherApp {
class MainClass {
public static void Main(string[] args) {
//WebAPIのURL
string url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=130010";
//HttpClientインスタンス作成(using System.Net.Http;を忘れないこと)
HttpClient client = new HttpClient();
//Get通信して結果を文字列として取得
string result = client.GetStringAsync(url).Result;
//表示
//Console.WriteLine(result);
//今回はルートが{で始まるオブジェクトなのでJObject.Parse,ルートが配列の場合はJArray.Parseを用いる
//(using Newtonsoft.Json.Linq;を忘れないこと)
JObject jobj = JObject.Parse(result);
//表示してみる
//Console.WriteLine(jobj);
//jobjが持つforecastsは配列なので以下のようにその配列部分を取得する。
JArray jarr = (JArray)jobj["forecasts"];
//jarrに入っているのはオブジェクトなので以下のようなforeachで回す
foreach(JObject f in jarr) {
//fとして取り出したJObjectのdateLabelは文字列なのでstringでキャストしてあげる
string dateLabel = (string)f["dateLabel"];
//確認してみる
//Console.WriteLine(dateLabel);
string telop = (string)f["telop"];
string date = (string)f["date"];
Console.WriteLine($"{dateLabel}({date})...{telop}");
}
}
}
}
実際は10分ぐらいの説明でふんふんと聞いてただけだったのでちゃんと理解しなきゃ。。