2016-07-11 14 views
1

Web Request JSON出力を取得して解析しようとしています。ここで私はRecordクラスをデシリアライズし、名前を選択しようとすると、私はこれらの結果 JSON逆シリアル化オブジェクトHTTPWebResponse

public class RootObject 
{ 
    public string kind { get; set; } 
    public string name { get; set; } 
    public string fullPath { get; set; } 
    public int generation { get; set; } 
    public string selfLink { get; set; } 
    public string type { get; set; } 
    public List<Record> records { get; set; } 
} 

public class Record 
{ 
    public string name { get; set; } 
    public string data { get; set; } 
} 

のための公共のクラスを作成して出力

{ 
    "kind":"internal", 
    "name":"SplashPageToggle_dg", 
    "fullPath":"SplashPageToggle_dg", 
    "generation":1255326, 
    "selfLink":"https://link", 
    "type":"stri ng", 
    "records":[ 
     { 
      "name":"enable_app1", 
      "data":"0" 
     }, 
     { 
      "name":"enable_app2", 
      "da ta":"0" 
     }, 
     { 
      "name":"enable_app3", 
      "data":"0" 
     }, 
     { 
      "name":"enable_app4", 
      "data":"0" 
     }, 
     { 
      "name":"enable_app5", 
      "data":"0" 
     }, 
     { 
      "name":"enable_app6", 
      "data":"1" 
     }, 
     { 
      "name":"enable_app7", 
      "data":"0" 
     }, 
     { 
      "name":"enable_app8", 
      "data":"0" 
     }, 
     { 
      "name":"enable_app9", 
      "data":"0" 
     }, 
     { 
      "name":"enable_app10", 
      "data":"0" 
     } 
    ] 
} 

ですが、私はRootObjectクラスから名前を取得します。ここに私のコード

static void Main(string[] args) 
{ 
    string url = "URL";  
    HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create(url); 
    getRequest.Method = "GET"; 
    getRequest.Credentials = new NetworkCredential("UN", "PW"); 
    ServicePointManager.ServerCertificateValidationCallback = new 
     RemoteCertificateValidationCallback 
     (
     delegate { return true; } 
    ); 

    var getResponse = (HttpWebResponse)getRequest.GetResponse();  
    Stream newStream = getResponse.GetResponseStream(); 
    StreamReader sr = new StreamReader(newStream);  
    var result = sr.ReadToEnd();  
    var splashInfo = JsonConvert.DeserializeObject<Record>(result); 

    Console.WriteLine(splashInfo.name); 
    Console.ReadLine(); 
} 

答えて

4

あなたは間違ったクラスにあなたのJSONをデシリアライズしようとしているです。

変更この行:これまで

var splashInfo = JsonConvert.DeserializeObject<Record>(result); 

var splashInfo = JsonConvert.DeserializeObject<RootObject>(result); 

フィドル:https://dotnetfiddle.net/2xR7hO

+1

そして、ちょうどOPため、splashInfoは今、レコードオブジェクトのデシリアライズされたリストが含まれていますのでうsplashInfo.recordsを呼び出してそれらをすべて返すことができます。 – Dispersia

+0

みんなありがとう。 – maltman

+0

@Dispersia。どのようにリストに自動的に入力できますか? fxと言うことは可能ですか? List.add()か何か?私はリストが自動的にJsonからどのように読み込まれるのかを知りません。 – uba2012

関連する問題