2017-07-13 12 views
0

JSONリンクから情報を取得して、フレンドリーな方法でユーザーに表示しようとしています。私はC#各項目へのJSON

など私は

ID = someValueの

GUID = someValueの

名= someValueの ユーザーを表示したいすべてのものを試したことだし、this.Basicallyまわりで私の頭を取得するように見えることはできません

私はJSONを得た後、私はjson2csharpに行って、下図のように私のクラスを得た:

public class Computer 
{ 
    public string ID { get; set; } 
    public string GUID { get; set; } 
    public string name { get; set; } 
    public string type { get; set; } 
    public string entity { get; set; } 
    public string serial { get; set; } 
    public string uuid { get; set; } 
    public string inventorynumber { get; set; } 
    public string status { get; set; } 
    public string site { get; set; } 
    public string location { get; set; } 
    public string manufacturer { get; set; } 
    public string model { get; set; } 
    public string owner { get; set; } 
    public string lastuser { get; set; } 
    public string domain { get; set; } 
    public string os { get; set; } 
    public string servicepack { get; set; } 
    public string osversion { get; set; } 
} 

public class Data 
{ 
    public List<Computer> computers { get; set; } 
} 

public class RootObject 
{ 
    public string state { get; set; } 
    public Data data { get; set; } 
} 


HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.xxx/?xxx=xxx&format=json "); 
     try 
     { 
      WebResponse response = request.GetResponse(); 

      using (Stream responseStream = response.GetResponseStream()) 
      { 
       StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); 

       var rawJson = reader.ReadToEnd(); 
       RootObject rootResult = JsonConvert.DeserializeObject<RootObject>(rawJson); 


       Console.Write(); 

       Console.ReadKey(); 
      } 

     } 

     catch (WebException ex) 
     { 
      WebResponse errorResponse = ex.Response; 
      using (Stream responseStream = errorResponse.GetResponseStream()) 
      { 
       StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8")); 
       String errorText = reader.ReadToEnd(); 
       Console.WriteLine(errorText); 
      } 

      throw; 
     } 

このコードであれば、私は、 do

Console.WriteLine(rootResult.state); 

「成功」という値が得られます。しかし、私は実際に私が "コンピュータ"の下に持っているデータを取得する方法を見つけることができません 誰かが私が間違ってやっている方法を私に見せることができますか?

私も同様の質問に従ってみましたが、私のJSON形式が少し違うので、それらはすべて異なっているようです。

ありがとうございます。

+0

これを実行すると、「rootResult.data」には何が入っていますか? – oerkelens

+0

私はJsonDemo.Program + Dataを取得します(JsonDemoは私のソリューションの名前です) – Besiktas

+0

逆シリアル化しようとしているJSONを投稿できますか? –

答えて

3

コンピュータのリストであるrootResult.data.computersを反復処理するだけでどうなりますか?

if(rootResult.data != null) 
{ 
    foreach (var computer in rootResult.data.computers) 
    { 
     Console.WriteLine(computer.ID); 
     Console.WriteLine(computer.GUID); 
     // etc for all properties 
    } 
} 
+0

上記のコードでエラーが発生します。System.NullReferenceException: 'オブジェクト参照がオブジェクトのインスタンスに設定されていません。' JsonDemo.Program.Data.Computer.getがnullを返しました。 – Besiktas

+0

興味深いことに、それはあなたの質問で言及すると便利だったでしょう:)その後、あなたの応答は_computers_を含んでいないか、あなたの応答をデシリアライズして間違っています。 JSONレスポンスにコンピュータがありますか? – oerkelens

+0

これは私のJSONです。 '{"状態 ":" SUCCESS "、" data ":{" computers ":[{" ID ":" XXXX "、" GUID ":" XXXX "、" name 「XXXX」、「XXXX」、「XXXX」、「状態」、「状態」、「状態」、「状態」、 「WSX> 310> 6> 17> 36」、「メーカー」、「Apple」、「モデル」:「XXXX」、「オーナー」:「XXXX」、「サイト」:「XXXX」、 "XXXX"、 "service":XXXX、 "osversion": "XXXX"}]}} ' – Besiktas

関連する問題