HttpClientを使って受け取ったJSON形式のレスポンスをデシリアライズする方法
方法としてはSystem.Text.Json
を使ってJSON文字列をデシリアライズするか,System.Net.Http.Json
を使ってレスポンスから直接オブジェクトを取得するか,がある.
System.Text.Json
を利用するためにはNugetからインストールします.
System.Net.Http.Json
を利用するためには,Nugetからパッケージをインストールします.
List<Prefecture> prefecturesData=null; HttpResponseMessage response = null; #region Method1 responseを受け取ってから文字列→System.Text.Jsonを使ってオブジェクトへ //リクエストを投げて,結果を取得する //BaseAddressを予め設定してあるので,BaseAddress以降をパラメータとして与えるだけでよい response = await this._httpClient.GetAsync("prefectures"); if(response.IsSuccessStatusCode) { //response.EnsureSuccessStatusCode(); //レスポンスからJSON文字列を取得 var prefecturesJsonString = await response.Content.ReadAsStringAsync(); //JSON文字列をデシリアライズしてList<Prefecture>型のデータに変換 prefecturesData = JsonSerializer.Deserialize<List<Prefecture>>(prefecturesJsonString); } else { } #endregion
#region Method2 1つのメソッドでリクエストの送信とレスポンスの受信,デシリアライズまで System.Net.Http.Json try { prefecturesData = await this._httpClient.GetFromJsonAsync<List<Prefecture>>("prefectures"); } catch (Exception ex) { } #endregion
#region Method3 responseのContentからデシリアライズ System.Net.Http.Json response = await this._httpClient.GetAsync("prefectures"); if(response.IsSuccessStatusCode) { prefecturesData = await response.Content.ReadFromJsonAsync<List<Prefecture>>(); } else { } #endregion //プロパティに入れる this.PrefecturesData = prefecturesData;