0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

噛み砕いたC#(json読み込み)

Last updated at Posted at 2019-10-10

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分ぐらいの説明でふんふんと聞いてただけだったのでちゃんと理解しなきゃ。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?