Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich Sammlungen von Schnittstelleninstanzen mithilfe von 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 });
Deserialisierung
Verwenden Sie beim Deserialisieren die folgenden Einstellungen:
var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects });
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!