Ich habe ein Objekt-Array, das Strings und Longs und diese Klasse enthält:
%Vor% Beim Deserialisieren des JSON-Arrays mit Json.Net erhalte ich jedoch einen anonymen Typ, der Address
und Name
anstelle eines SimpleMailAddress
-Objekts enthält.
Ich möchte kein stark typisiertes Objekt zum Deserialisieren erstellen, da es nicht wiederverwendet wird und ich viele Objekte dafür erstellen müsste. Gibt es eine Möglichkeit, dies mit Json.Net oder einer anderen Bibliothek zu tun?
So serialisiere / deserialiere ich:
%Vor% Und MailMessageRequest
:
Json enthält kein vererbtes Wissen über Ihre SimpleMailAddress
-Klasse. Wenn Sie also die Deserialisierung anweisen, dass Ihre Args-Eigenschaft vom Typ Object
ist, tut der Deserializer das Beste, was er kann (indem er einen anonymen Typ erstellt). Es sieht nur Daten, es hat keine Kenntnis, dass Sie ein SimpleMailAddress
Objekt wollen.
Json.net hat eine JObject
-Klasse. Verwenden Sie das anstelle von Object für Ihren Args-Parameter, wenn der tatsächliche Inhalt von Args den Typ ändern kann.
Dann können Sie bei Bedarf die Daten aus dem JObject
-Objekt lesen.
Wenn Sie den tatsächlichen Inhalt von Args nicht interessieren, lassen Sie es als Object
und ignorieren Sie es.
Bearbeiten: JSon.Net kann während der Serialisierung Typinformationen einbetten, die während der Deserialisierung verwendet werden können.
Lassen Sie den Parameter Args
als Object
. Verwenden Sie dann die Option TypeNameHandling
von All
während der Serialisierung und Deserialisierung.
Sie sollten Ihr Args
-Objekt als Ihr gewünschtes SimpleMailAddress
-Objekt haben.
Die Datenkontakt-Serialisierer, die in das.net-Framework integriert sind, haben das Konzept bekannter Typen, wo Sie ihnen sagen, welche Typen zu erwarten sind, und sie verwendet diese während der Deserialisierung.
Es gibt einen eingebauten Json Data Contract Serializer, aber ich bin mir nicht sicher, ob er mit Ihren Json Daten kompatibel ist, er muss möglicherweise serialisiert und deserialisiert werden, um mit dieser Methode zu arbeiten.
Tags und Links c# json serialization json.net