こんばんは。きわさです。
C#(Visual C#)でJSONを読み込む方法です。
まず参照設定で、.NET の System.Runtime.Serialization の追加が必要です。
また、下記が必要です。
using System.Runtime.Serialization; using System.Runtime.Serialization.Json;
では、いきます。
JSON用のclassを定義する
JSONをパースするためにJSON用のclassを作る必要があります。
以前の記事(PHPでリクエスト情報を取得する)で扱ったJSONを例にすると、下記のようなclassが必要になります。
[DataContract]
class RequestJson
{
    [DataMember]
    public string status { get; set; }
    [DataMember]
    public Results results { get; set; }
    [DataContract]
    public class Results
    {
        [DataMember]
        public string uri { get; set; }
        [DataMember]
        public string method { get; set; }
        [DataMember]
        public string time { get; set; }
            
        [DataMember]
        public string query { get; set; }
            
        [DataMember]
        public string accept { get; set; }
            
        [DataMember]
        public string accept_charset { get; set; }
            
        [DataMember]
        public string accept_encoding { get; set; }
           
        [DataMember]
        public string sccept_language { get; set; }
            
        [DataMember]
        public string connection { get; set; }
           
        [DataMember]
        public string host { get; set; }
            
        [DataMember]
        public string referer { get; set; }
            
        [DataMember]
        public string user_agent { get; set; }
            
        [DataMember]
        public string remote_address { get; set; }
    }
}
このJSONには status と results のメンバがいます。
status は文字列なので、stringで定義します。
このとき普通のclassと違うのは、メンバ定義の直前に [DataMember] を記載するということです。
そして一方、results にはさらに複数のメンバがいます。なので、型は別途定義したResults クラスとします。class定義の直前には [DataContract] を記載します。
なので、Results クラス定義の前と、全体を含む RequestJson クラス定義の前にも記載します。
こうして全てのメンバを記載します。
文字列をJSONオブジェクトにパースする
パースする処理です。
static RequestJson getJson(string text)
{
    RequestJson json;
    // シリアライザ
    var serializer = new DataContractJsonSerializer(typeof(RequestJson));
    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(text)))
    {
        // JSONデシリアライズ
        json = (RequestJson)serializer.ReadObject(ms);
    }
    return json;
}
json用のclassを渡してシリアライザのオブジェクトを生成します。
そして文字列をストリームに読み込み、さらにシリアライザで読み込みます。
これでパースは完了で、jsonオブジェクトが取得できます。
あとは json.status や json.results.uri というように各メンバにアクセスできます。
