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

Wie deserialisiere ich Sammlungen von Schnittstelleninstanzen mithilfe von JSON.NET?

Barbara Streisand
Freigeben: 2025-01-06 07:00:40
Original
400 Leute haben es durchsucht

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

Sammlungen von Schnittstelleninstanzen deserialisieren

Beim Versuch, eine Sammlung von Schnittstelleninstanzen mithilfe von JSON.NET zu serialisieren und zu deserialisieren, ist es wichtig, Folgendes zu berücksichtigen das Problem der Typidentifikation während der Deserialisierung. Die in diesem Szenario aufgetretene Fehlermeldung weist darauf hin, dass es nicht möglich ist, eine Schnittstelle oder abstrakte Klasse direkt zu instanziieren.

Benutzerdefinierter Typbinder-Ansatz

Ein vorgeschlagener Ansatz umfasst die Verwendung von a benutzerdefinierter Typ-Resolver-Ordner. Dazu gehört das Erstellen einer benutzerdefinierten Klasse, die die ITypeResolver-Schnittstelle implementiert und diese während der Deserialisierung dem JsonSerializer zur Verfügung stellt. Der benutzerdefinierte Binder wäre für die Auflösung des konkreten Typs basierend auf dem Schnittstellentyp verantwortlich.

JSON.NET-Standardeinstellungen

Mit JSON.NET ist dies jedoch möglich um eine Deserialisierung zu erreichen, ohne dass benutzerdefinierte Bindemittel erforderlich sind. Durch Anpassen der TypeNameHandling- und TypeNameAssemblyFormat-Einstellungen im JsonSerializerSettings-Objekt kann JSON.NET die Typidentifizierung sowohl während der Serialisierung als auch der Deserialisierung automatisch verarbeiten.

Serialisierung

Geben Sie beim Serialisieren die an folgende Einstellungen:

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

Deserialisierung

Verwenden Sie beim Deserialisieren die folgenden Einstellungen:

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

Mit diesen Einstellungen wird JSON.NET automatisch Identifizieren Sie die konkreten Typen der Schnittstelleninstanzen basierend auf den Typinformationen, die während der Serialisierung bereitgestellt werden. Dies ermöglicht eine nahtlose Deserialisierung von Sammlungen, die Objekte enthalten, die unterschiedliche Schnittstellen implementieren.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich Sammlungen von Schnittstelleninstanzen mithilfe von 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