2016-05-01 2 views
5

Ich versuche, ein .NET-Objekt von einem JObject zu schaffen, aber ich bin alle Eigenschaften des Objekts als Standardwerte (null für String, 0 für int etc.) bekommenDeserialize Json ToObject Methode führt zu Standardeigenschaften unter Verwendung von Werten

ich erstelle ein einfaches Jobject:

var jsonObject = new JObject(); 
jsonObject.Add("type", "Fiat"); 
jsonObject.Add("model", 500); 
jsonObject.Add("color", "white"); 

Die Auto-Klasse ist:

public class Car 
{ 
    string type {get;set;} 
    int model {get ;set;} 
    string color {get;set;}    
} 

Die Deserialisierung ist hier:

Car myCar = jsonObject.ToObject<Car>(); 

Aber das Ergebnis in der Laufzeit ist die Standardwerte: Run time picture

Ich möchte wissen, warum es passiert ist und wie soll ich es tun richtig,

Dank

Antwort

5

Sie haben Sie haben keinen Zugriffsmodifikator für Ihre Eigenschaften definiert. Ohne den Zugriffsmodifizierer explizit festzulegen (z. B. public protected internal private), ist eine Eigenschaft privat.

Newtonsoft.Json benötigt einen öffentlichen Setter, um den Wert Ihrer Eigenschaft festzulegen.

Versuchen:

public class Car 
{ 
    public string type { get; set; } 
    public int model { get; set; } 
    public string color { get; set; } 
} 

Wenn Ihr Einrichter Öffentlichkeit mit ist keine Option für Ihre. Betrachten Sie die anderen in this SO answer aufgeführten Optionen.

+0

Ich verschwendete 2 Stunden dafür ?! Vielen Dank !!! –