Heim > Backend-Entwicklung > C++ > Wie deserialisiere ich Sammlungen von Schnittstelleninstanzen mit JSON.NET?

Wie deserialisiere ich Sammlungen von Schnittstelleninstanzen mit JSON.NET?

Mary-Kate Olsen
Freigeben: 2025-01-06 07:08:41
Original
508 Leute haben es durchsucht

How to Deserialize Collections of Interface Instances with JSON.NET?

Sammlungen von Schnittstelleninstanzen deserialisieren

Problem:

Beim Versuch, eine Sammlung von zu deserialisieren Bei Schnittstelleninstanzen mit JSON.NET wird der Fehler „Es konnte keine Instanz vom Typ ITestInterface erstellt werden. Typ ist eine Schnittstelle“ angezeigt oder abstrakte Klasse und kann nicht instanziiert werden“ tritt auf.

Lösung:

Typnamenverarbeitung verwenden:

JSON.NET stellt einen Mechanismus namens „Type Name Handling“ bereit, um die Deserialisierung von Schnittstelleninstanzen zu handhaben. Durch Angabe der TypeNameHandling-Eigenschaft des JsonSerializerSettings-Objekts für TypeNameHandling.Objects serialisiert JSON.NET den Typnamen der Schnittstellenimplementierung zusammen mit den JSON-Daten.

Während der Deserialisierung verwendet JSON.NET den angegebenen Typnamen um die entsprechende Instanz der Schnittstellenimplementierung zu erstellen. Der Assemblyname des Typs kann für eine genauere Deserialisierung auch angegeben werden, indem die TypeNameAssemblyFormat-Eigenschaft auf FormatterAssemblyStyle.Simple.

Code festgelegt wird Beispiel:

Serialisierung:

string serializedJson = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects,
    TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
});
Nach dem Login kopieren

Deserialisierung:

var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects
});
Nach dem Login kopieren

Durch Verwendung der Typnamenbehandlung JSON.NET kann Sammlungen von Schnittstelleninstanzen effektiv deserialisieren und so sicherstellen, dass die richtigen Implementierungen vorliegen erstellt.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich Sammlungen von Schnittstelleninstanzen mit JSON.NET?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage