2016-03-27 12 views
0

Wie kann man alle Artikel von car_items in diesem JSON https://app.anytimecar.ru/data/v3.4/info/ nehmen? Ich versuchte:C# JSON Deserialisierung (Liste, dass keine Liste)

public class anytimeCars 
{ 
    public string status { get; set; } 
    public anytimeData data { get; set; } 
} 
public class anytimeCar 
{ 
    public string id { get; set; } 
    public string brand { get; set; } 
    public string color { get; set; } 
    public string power { get; set; } 
    public string exterior { get; set; } 
    public string interior { get; set; } 
    public string date_of_construction { get; set; } 
    public string car_type { get; set; } 
    public string lng { get; set; } 
    public string lat { get; set; } 
    public string address { get; set; } 
} 
public class anytimeData 
{ 
    public List<anytimeCar> car_items { get; set; } 
} 


anytimeCars anytimeCars = new anytimeCars(); 
      anytimeCars = JsonConvert.DeserializeObject<anytimeCars>(response.Content.ToString()); 

Aber es funktioniert nicht, weil car_items keine Liste ist.

Antwort

0

Sie können eine solche Zuordnung zu Dictionary<int, anytimeCar> deserialisieren. Beachten Sie, dass Sie Ihren Vertrag ein wenig anpassen müssen, da car_items keine Eigenschaft im Stammverzeichnis ist. Es funktioniert wie folgt:

public class AnytimeData 
{ 
    [JsonProperty("car_items")] 
    public Dictionary<int, anytimeCar> Cars { get; set; } 
} 
public class Response 
{ 
    public AnytimeData Data {get;set;} 
} 

Und dann können Sie eine Anfrage stellen und deserialisieren es wie folgt aus:

var url = "https://app.anytimecar.ru/data/v3.4/info/"; 

using (var client = new WebClient()) 
{ 
    string json = client.DownloadString(url); 
    var data = JsonConvert.DeserializeObject<Response>(json); 

    foreach (anytimeCar car in data.Data.Cars.Values) 
    { 
     Console.WriteLine(car.brand); 
    } 
} 
+0

Danke, funktioniert gut! – Yan