NewtonソフトのJsonコードからマイクロソフトのJsonコードへの変更
NewtonソフトのJsonコンバータを採用しているコードからSystem.Text.Jsonへの更新作業手順概要
NewtonソフトのJsonコンバートツールからマイクソフト純正に変更する手順についてになります
実行結果のJsonデータをクリップボードにコピー
事前にブラウザ等からJsonフォーマット結果を取得する方法
ブラウザの表示結果をコピーしておいたり、サンプルフォーマットをコピーしておきます
実行中のデータを取得する方法
- result変数に代入されている情報を取得します
- 代入されている行の下あたりにブレークポイントを設定します
- result変数に代入されている情報を取得します
- アプリを実行し、ブレークポイントで止まったことを確認します
- result変数にマウスカーソルをホバーすると、内容がポップアップされます
- 表示からテキストビジュアライザーを選択します
- テキストビジュアライザーが表示されます
- CTL-A,CTL-Cのショートカット、または、右クリックメニューですべて選択して、クリップボードにコピーします
Jsonのデシリアライズのベースになるクラスを作成
デバッグを停止しておきます
クラスを作成する場所をクリックしておきます
編集メニューからJSONをクラスとして貼り付けるを選択します
Jsonデータから自動作成されたクラス
クラスが作成されますので、デフォルトのクラス名(Rootobject)をWeatherInfoに変更しておきます
public class WeatherInfo // Rootobjectから変更
{
public string city { get; set; }
public string weather { get; set; }
public Location location { get; set; }
public string percent { get; set; }
public string Humidity { get; set; }
public string temp { get; set; }
public string wind { get; set; }
public string pressure { get; set; }
public string url { get; set; }
}
public class Location
{
public string longitude { get; set; }
public string latitude { get; set; }
}
Jsonデータから自動作成されたクラス(同じですが、コメントありにしてみました)
クラスが作成されますので、デフォルトのクラス名(Rootobject)をWeatherInfoに変更しておきます
// 天気情報を保持するクラス
public class WeatherInfo // Rootobjectから変更
{
// 都市名
public string city { get; set; }
// 天気
public string weather { get; set; }
// 場所情報
public Location location { get; set; }
// 天気のパーセンテージ
public string percent { get; set; }
// 湿度
public string Humidity { get; set; }
// 温度
public string temp { get; set; }
// 風速
public string wind { get; set; }
// 気圧
public string pressure { get; set; }
// URL
public string url { get; set; }
}
// 場所情報を保持するクラス
public class Location
{
// 経度
public string longitude { get; set; }
// 緯度
public string latitude { get; set; }
}
コードの変更
変更前
// 天気情報からアイコンのURLを取り出す
JObject jobj = JObject.Parse(result);
string todayWeatherIcon = (string)((jobj["url"] as JValue).Value);
変更後
WeatherInfoクラスのインスタンスを戻り値とするメソッドを呼びます
パッケージが足りないのでエラーになりますが、以降の処理でエラーにならないように処理します
// 天気情報からアイコンのURLを取り出す
WeatherInfo weatherInfo = JsonSerializer.Deserialize<WeatherInfo>(result);
string todayWeatherIcon = weatherInfo.url;
Newton.Jsonをアンインストール
パッケージ管理画面を表示
Newtonsoft.Jsonパッケージをアンインストール
インテリセンスでSystem.Text.Jsonパッケージのインストール
上記のパッケージ管理画面からでもインストールできますが、ここではインテリセンスを用いた方法を示します
実行結果の確認
では、実行してみて問題ないかを確認してみましょう
応用
Labelを1つフォームに置いて、そこにcity情報を表示してみましょう
string city = weatherInfo.city;
label1.Text = city;
おまけ
C#の習慣として、プロパティ名はPascal形式(先頭文字は大文字)としたいところです
VisualStudioには上記のような自動的にJsonデータからクラスを作成できる機能がありますが、外部のブラウザでフリーのツールがありますので、そちらが細かな設定ができますのでおすすめです
情報を追記しておきますので、本格的に進めたい時は参考にしてください
ディスカッション
コメント一覧
まだ、コメントがありません