C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】Newtonsoft.JsonでJSONを.NETオブジェクトにデシリアライズし、配列から特定の値を取得する方法

C#でWeb APIなどから取得したJSONデータを扱う際には、Newtonsoft.Json(Json.NET)ライブラリが広く利用されています。この記事では、WebClientクラスでJSON文字列をダウンロードし、JsonConvertクラスを使って.NETオブジェクトにデシリアライズした後、配列から特定の1つの値を取り出す方法を解説します。

WebClientクラスとは

WebClientクラスは、URIで識別されるローカル・イントラネット・インターネット上の任意のリソースに対して、データの送受信を行うための共通メソッドを提供するクラスです。

内部ではWebRequestクラスを使用してリソースへのアクセスを実現しており、WebRequest.RegisterPrefixメソッドに登録された任意のWebRequest派生クラスを通じてデータにアクセスできます。

代表的なメソッドのひとつがDownloadStringです。指定したリソースから文字列(String)をダウンロードして返します。

また、リクエストにカスタムヘッダーが必要な場合は、Headersコレクションにヘッダーを追加する必要があります。

実装例

  • サンプルでは「https://jsonplaceholder.typicode.com/posts」というURLにアクセスしてJSONを取得します。
  • 取得したJSONはUser型の配列にデシリアライズされます。
  • そのUser配列から最初の要素のtitleプロパティの値を出力します。
class Program{
    static void Main(string[] args){
        var client = new WebClient();
        var json = client.DownloadString("https://jsonplaceholder.typicode.com/posts");
        var userPosts = JsonConvert.DeserializeObject<User[]>(json);
        System.Console.WriteLine(userPosts[0].title);
        Console.ReadLine();
    }
}
public class User{
    public string userId { get; set; }
    public string id { get; set; }
    public string title { get; set; }
    public string body { get; set; }
}

ポイント解説

JsonConvert.DeserializeObject<T>(json)は、JSON文字列を指定した型(ここではUser配列)に変換するメソッドです。JSONの各キー名とクラスのプロパティ名が一致している必要があるため、UserクラスにはuserId・id・title・bodyというプロパティを定義しています。

デシリアライズ後は通常の配列と同じようにインデックスでアクセスでき、userPosts[0].titleのように最初の要素の値を簡単に取得できます。

実行結果

sunt aut facere repellat provident occaecati excepturi optio reprehenderit

補足:モダンな開発ではHttpClientが推奨

WebClientは現在レガシーなAPIとされており、新しいプロジェクトでは非同期処理に対応したHttpClientクラスやGetFromJsonAsyncなどの拡張メソッドを使うことが推奨されています。ただし、既存コードの保守や簡単なスクリプト用途では、今回のようにWebClient+JsonConvertの組み合わせも今なお有効です。

  1. JavaScriptでJSON配列からデータを読み取る方法をサンプルコード付きで解説

    Web開発では、APIから取得したJSONデータを処理する場面が非常によくあります。本記事では、JavaScriptを使ってJSON配列からデータを読み取り、画面に表示する方法を、実際に動作するサンプルコードとともにわかりやすく解説します。 JSON配列からデータを読み取る基本の流れ JSON形式の文字列をJavaScriptで扱うには、まずJSON.parse()メソッドで文字列をJavaScriptのオブジェクト(配列)に変換します。変換後は、forEach()メソッドなどを活用して、配列の各要素に格納された値へ簡単にアクセスできます。 サンプルコード <!DOCTYPE htm

  2. 【Python】datetimeオブジェクトから月と日だけを抽出して表示する方法

    Pythonでdatetimeオブジェクト(日時データ)から「月」と「日」だけを抽出してグラフに表示したい場合、matplotlibが提供するDateFormatter()クラスを利用すると簡単に実現できます。この記事では、実際のコード例とともに具体的な手順をわかりやすく解説します。実装の手順図(figure)のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。2次元のサイズ変更可能な表形式データを持つデータフレームdfを作成します。figureとサブプロットの一式を作成します。plot()メソッドを使ってデータフレームをプロットします。X軸のフォーマッターを設定し、月