Heim > Backend-Entwicklung > C++ > Wie kann ich mit Json.net eine Liste von Basis- und abgeleiteten Typen deserialisieren und ihre tatsächlichen Typen beibehalten?

Wie kann ich mit Json.net eine Liste von Basis- und abgeleiteten Typen deserialisieren und ihre tatsächlichen Typen beibehalten?

DDD
Freigeben: 2025-01-21 18:35:09
Original
862 Leute haben es durchsucht

How Can I Deserialize a List of Base and Derived Types Using Json.net and Preserve Their Actual Types?

Abgeleitete Typen mit Json.net deserialisieren

Angenommen, Sie haben eine Basisklasse Base und eine abgeleitete Klasse Derived, wobei Derived von Base erbt. Sie haben eine Liste von Base-Objekten, die Instanzen von Base und Derived enthält. Wenn Sie die JSON-Darstellung dieser Liste deserialisieren, möchten Sie den abgeleiteten Typ als seinen tatsächlichen Typ abrufen, nicht nur als Base-Objekt.

Um dies zu erreichen, bietet Json.net eine Funktion namens Typnamenverarbeitung. Indem Sie diese Funktion aktivieren und als Einstellungsparameter an die Serialisierungs- und Deserialisierungsvorgänge übergeben, können Sie den Objekttyp angeben, der im serialisierten JSON enthalten sein soll.

<code class="language-csharp">Base object1 = new Base() { Name = "Object1" };
Derived object2 = new Derived() { Something = "Some other thing" };
List<Base> inheritanceList = new List<Base>() { object1, object2 };

JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string Serialized = JsonConvert.SerializeObject(inheritanceList, settings);
List<Base> deserializedList = JsonConvert.DeserializeObject<List<Base>>(Serialized, settings);</code>
Nach dem Login kopieren
Nachdem

deserialisiert wurde, enthält deserializedList Base- und Derived-Objekte des richtigen Typs. Das Aktivieren der Typnamenverarbeitung hat jedoch einen Nachteil: Es werden die Namen aller Objekte und Listen in das serialisierte JSON einbezogen, was in manchen Fällen möglicherweise nicht ideal ist.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Json.net eine Liste von Basis- und abgeleiteten Typen deserialisieren und ihre tatsächlichen Typen beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage