Ich benutze gerne die Newtonsoft JSON-Bibliothek . Zum Beispiel würde ich ein JObject
aus einem .NET-Objekt erstellen , in diesem Fall eine Instanz von Exception (möglicherweise eine Unterklasse oder nicht).
if (result is Exception)
var jobjectInstance = JObject.FromObject(result);
Jetzt weiß ich, dass die Bibliothek JSON-Text (dh eine Zeichenfolge) für ein 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 wechseln und dann die Deserialisierungsfunktion verwenden kann, aber das scheint mir rückwärts zu sein.
T
, benötigte ich etwasresult=(value is JObject) ? ((JObject)value).ToObject<T>() : (T)default(T);
, um es erfolgreich zu konvertieren (Hinweis -value
ist ein Objekt, das aus einer Datenbank stammt, die ein JObject sein könnte, oder etwas anderes. In diesem Fall sollte das Ergebnis null sein).jobject.ToObject(myObject.GetType())
Sie, wenn Sie den Objekttyp nicht kennen.Aus der Dokumentation habe ich dies gefunden
Die Klassendefinition für
Person
sollte mit folgenden Komponenten kompatibel sein:Bearbeiten
Wenn Sie eine neuere Version von JSON.net verwenden und keine benutzerdefinierte Serialisierung benötigen, lesen Sie bitte die Antwort von TienDo oben (oder unten, wenn Sie mich positiv bewerten: P), die präziser ist.
quelle
Zu spät, nur für den Fall, dass jemand nach einem anderen Weg sucht:
quelle