2017-07-13 5 views
0

Ich versuche, einige Informationen von einem JSON-Link zu erhalten und dem Benutzer auf freundliche Weise anzuzeigen. Ich bin alles versucht und kann meinen Kopf nicht scheinen um this.Basically zu bekommen ich den BenutzerC# JSON zu jedem Element

ID = somevalue

GUID = EinWert

Name = EinWert usw.

zeigen wollen

Nachdem ich meine JSON bekam ging ich zu json2csharp und bekam meine Klassen wie folgt:

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; 
     } 

mit diesem Code, wenn ich tun

Console.WriteLine(rootResult.state); 

Ich bekomme meine "Erfolg" -Wert. Aber ich finde keine Möglichkeit, die Daten unter "Computer" zu bekommen. Kann mir jemand einen Weg zeigen, was ich falsch mache?

Ich habe auch versucht, den ähnlichen Fragen zu folgen, aber sie scheinen alle unterschiedlich zu sein, da mein JSON-Format ein wenig anders ist.

Vielen Dank im Voraus.

+0

Was ist in "rootResult.data", wenn Sie dies ausführen? – oerkelens

+0

Ich bekomme JsonDemo.Program + Data (JsonDemo ist der Name meiner Lösung) – Besiktas

+0

Können Sie den JSON, den Sie versuchen zu deserialisieren, veröffentlichen? –

Antwort

3

Was passiert, wenn Sie einfach über Ihre rootResult.data.computers iterieren, die eine Liste von Computern sein sollte?

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

Ich erhalte einen Fehler mit dem obigen Code: System.NullReferenceException: 'Objektreferenz nicht auf eine Instanz eines Objekts gesetzt.' JsonDemo.Program.Data.Computer.get gab null zurück. – Besiktas

+0

Interessant, es wäre nützlich gewesen, das in Ihrer Frage zu erwähnen :) Dann enthält entweder Ihre Antwort keine _computers_ oder etwas schief geht mit Deserialisierung Ihrer Antwort. Gibt es Computer in Ihrer JSON-Antwort? – oerkelens

+0

Dies ist mein JSON, wenn ich vom Link '{" state ":" SUCCESS "," data ": {" Computer ": [{" ID ":" XXXX "," GUID ":" XXXX "," name ":" XXXX "," Typ ":" XXXX "," Entität ":" "," Seriell ":" XXXX "," UUID ":" XXXX "," Inventarnummer ":" XXXX "," Status ":" XXXX "," Website ":" XXXX "," Standort ":" WSJ> 310> 6> 17> 36 "," Hersteller ":" Apple "," Modell ":" XXXX "," Eigentümer ":" XXXX " , "lastuser": "XXXX", "Domäne": "XXXX", "os": "XXXX", "Servicepack": XXXX, "osversion": "XXXX"}]}} ' – Besiktas

Verwandte Themen