Heim >Backend-Entwicklung >C++ >Wie serialisiere und deserialisiere ich abgeleitete Typen in C# mit Json.net?
Abgeleitete Typen mit Json.net serialisieren und deserialisieren
Json.net (Newtonsoft) erfordert eine spezielle Behandlung, um abgeleitete Typen ordnungsgemäß zu serialisieren und zu deserialisieren, wenn polymorphe Vererbung in C# verwendet wird. In diesem Artikel wird erläutert, wie Sie dies erreichen, indem Sie die Typnamenverarbeitung aktivieren.
Frage
Bedenken Sie die folgende Klassenhierarchie:
<code class="language-csharp">public class Base { public string Name; } public class Derived : Base { public string Something; }</code>
Wenn Sie nun versuchen, eine JSON-Zeichenfolge zu deserialisieren, die eine Liste von Basisobjekten enthält, diese aber tatsächlich abgeleitete Objekte enthält, können Sie die abgeleiteten Typinformationen nicht wiederherstellen. Wie kann dieses Problem gelöst werden?
Antwort
Json.net bietet die Option TypeNameHandling, die die Serialisierung und Deserialisierung von Typnamen ermöglicht. Um diese Funktion zu nutzen:
Hier ist ein Beispiel:
<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>
Dieser Ansatz stellt sicher, dass Json.net Typinformationen während der Serialisierung beibehält und sie während der Deserialisierung wiederherstellt, sodass abgeleitete Typen korrekt wiederhergestellt werden können.
Das obige ist der detaillierte Inhalt vonWie serialisiere und deserialisiere ich abgeleitete Typen in C# mit Json.net?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!