Wie man ein JObject zu .NET Objekt deserialisiert


Answers

Aus der Dokumentation habe ich das gefunden

JObject o = new JObject(
   new JProperty("Name", "John Smith"),
   new JProperty("BirthDate", new DateTime(1983, 3, 20))
);

JsonSerializer serializer = new JsonSerializer();
Person p = (Person)serializer.Deserialize(new JTokenReader(o), typeof(Person));

Console.WriteLine(p.Name);

Die Klassendefinition für Person sollte kompatibel sein mit:

class Person {
    public string Name { get; internal set; }
    public DateTime BirthDate { get; internal set; }
}

Bearbeiten

Wenn Sie eine aktuelle Version von JSON.net verwenden und keine benutzerdefinierte Serialisierung benötigen, lesen Sie bitte die Antwort von TienDo oben (oder unten, wenn Sie mich auffrischen: P), die übersichtlicher ist.

Question

Ich verwende gerne die Newtonsoft JSON-Bibliothek . Zum Beispiel würde ich ein JObject von einem .NET-Objekt erstellen, in diesem Fall eine Instanz von Exception (möglicherweise oder nicht eine Unterklasse)

if (result is Exception)
    var jobjectInstance = JObject.FromObject(result);

Jetzt weiß ich, dass die Bibliothek JSON-Text (dh eine Zeichenkette) zu einem Objekt deserialisieren kann

// only works for text (string)
Exception exception = JsonConvert.DeserializeObject<Exception>(jsontext); 

aber was ich suche ist:

// now i do already have an JObject instance
Exception exception = jobjectInstance.????

Nun, es ist klar, dass ich von JObject zurück zu JSON-Text gehen und dann die Deserialize-Funktionalität verwenden kann, aber das scheint mir rückwärts zu gehen.