2016-04-03 5 views
1

Deserialize Ich habe folgendes json:ein Objekt C#

{ 
    "coord":{"lon":-88.92,"lat":44.46}, 
    "weather":[{"id":600,"main":"Snow","description":"light snow","icon":"13d"}], 
    "main":{"temp":271.72,"pressure":1009,"humidity":73,"temp_min":269.15,"temp_max":273.15}, 
    "name":"XXXXX", 
} 

und ich versuche, in C# unter Verwendung dieser Klassen deserialisieren:

public class weatherClass 
{ 

    [JsonProperty("name")] 
    public string Name { get; set;} 

    [JsonProperty("main")] 
    public Info Main { get; set;} 

    [JsonProperty("weather")] 
    public List<InfoWeather> Weather { get; set; } 
} 

public class Info{ 
    public string temp { get; set;} 
    public string pressure { get; set;} 
} 

public class InfoWeather { 
    public string description { get; set;} 
    public string main { get; set;} 
} 

kann ich Zugang zu Temp und Druck von Info-Klasse . Aber ich habe Probleme mit InfoWeather. Es gibt nichts zurück:

weatherResult.Text = string.Format("The city is: {0} and the description is: {1}", weatherlass.Name, weatherlass.Weather); 

Wenn ich weatherlass.Weather.description verwenden

enter image description here

+0

Sie müssen [MCVE], das zeigt, Ihr Problem zu liefern. Oder eine andere Art, es zu betrachten, ist, dass ich in der Lage sein sollte, Ihren Code in VS oder LINQPad zu kopieren und einzufügen und ihn auszuführen. – Enigmativity

+0

Hier mein Problem: 'weatherResult.Text = string.Format (" Die Stadt ist: {0} und die Beschreibung ist: {1} ", weatherlass.Name, weatherlass.Weather); '[link] (https://www.dropbox.com/s/3zv8zr2aop2vgs1/Screen%20Shot%202016-04-02%20at%2022.03.16.png?dl=0) wenn ich' weatherlass.Weather.description '. Es gibt Fehler zurück! – Seph1603

+0

Können Sie Ihre Frage bearbeiten, um den zusätzlichen Text und das Bild hinzuzufügen - nicht extern mit dem Bild verlinken, stattdessen in die Frage einbetten - und können Sie den Code eingeben, den Sie zur Deserialisierung verwenden? Sie müssen ein Copy-and-Paste-Beispiel in Ihre Frage einfügen. – Enigmativity

Antwort

1
/*Change your class definitions to use proper case names then use the camel case converter provide by newtonsoft*/ 

public class WeatherClass 
{ 
    public string Name { get; set; } 
    public Info Main { get; set; } 
    public List<InfoWeather> Weather { get; set; } 
} 

public class Info 
{ 
    public string Temp { get; set; } 
    public string Pressure { get; set; } 
} 

public class InfoWeather 
{ 
    public string Description { get; set; } 
    public string Main { get; set; } 
} 

var jsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; 
var weatherClass = Newtonsoft.Json.JsonConvert.DeserializeObject<WeatherClass>(json, jsonSerializerSettings); 
+0

Dank @Vincent, aber ich habe immer noch das gleiche Problem: [Bild] (https://www.dropbox.com/s/bpc4xz3hoqefivo/Screen%20Shot%202016-04-02%20at%2022.21.20.png?dl= 0) – Seph1603

+1

Dann ist es kein Serialisierungsproblem, da ich es hier ausgeführt habe und es perfekt funktioniert Ihr Weather-Objekt ist eine Liste. Versuchen Sie weatherClass.Weather [0]. Beschreibung – Vincent

+0

Perfekt !! Vielen Dank. Das war ich brauchte :) – Seph1603