ASP.NET (C#) - JSON zu verschateltes Objekt (Anfänger-Frage)



  • Erstmal hallo. 🙂 Ich bin ein absoluter C#-Anfänger und habe auch noch nicht viel damit gemacht. (komme eigentlich aus der PHP-Ecke) Die Syntax ist mir aber bekannt, nur viele Strukturen erkenne ich noch nicht. Ich baue eine typische ASP.NET-Website und verwende C# für die serverseitigen Skripte...

    In diesem Fall, soll ein JSON-String zu einem Objekt mit darin enthaltenen ObjectArray werden...

    Ich hab bspw. ein simples JSON:

    {
     "header":
     {
      "info":20,
      "execTime":"93ms"
     },
     "data":
     [
      {
       "offerType":"car",
       "currency":"EUR"
      },
      {
       "offerType":"bike",
       "currency":"EUR"
      },
      {
       "offerType":"shoe",
       "currency":"USD"
      }
     ]
    }
    

    Und mein C#-Skript:

    string json = /*JSON-SIEHE-OBEN*/
    obj_data[] data = JsonConvert.DeserializeObject<obj_data[]>(json);
    

    Mein Ziel ist es, zumindest das Objekt data aus dem JSON-String auszulesen und entsprechen aufrufen zu könmnen...

    Response.Write(data[2].currency);
    

    Das funktioniert auch soweit, insofern ich ausschließlich das Array im JSON-String (also ohne das Objekt "data") initialisiere...

    ich vermute, ich muss meine DataType-Klasse entsprechend verändern:

    public class obj_data {
        public string offerType { get; set; }
        public string currency { get; set; }
    }
    

    Wer kann mir helfen??



  • Ja, mit der gezeigten Klasse sollte es funktionieren.

    Ansonsten einfach mal von C# aus ein obj_data-Array anlegen und dann per JSON serialisieren (und dann schauen was evtl. noch anders ist).



  • //als DataTypes...

    public class header {
    public int info { get; set; }
    public string execTime { get; set; }
    }
    
    public class data {
    public string offerType { get; set; }
    public string currency { get; set; }
    }
    
    public class json {
    public header header { get; set; }
    public List data { get; set; }
    }
    

    //und dann im Skript...

    string json = "{...}";
    json offer = JsonConvert.DeserializeObject<json>(json);
    Response.Write(offer.data[2].currency);
    


  • Bei der Lösung des Problems hat mir übrigens dieser DataTypes-Klassen-Generator geholfen 🙂



  • Bei der Lösung des Problems hat mir übrigens dieser DataTypes-Klassen-Generator geholfen 🙂

    das is cool .. gibts sowa auch für XML=> classmodel converteR?;)



  • Ja, gibt es: XSD (schon beim VS als Konsolentool dabei)

    Oder aber xsd2Code.

    Einfach mittels XSD aus einer XML-Datei eine XSD erzeugen und dann wiederum mittels XSD oder xsd2Code den Code erzeugen lassen.


Log in to reply