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 });
Deserialisierung:
var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects });
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!