Serialisierung und Deserialisierung abgeleiteter Typen in Json.NET (Newtonsoft)
Json.NET bietet Flexibilität bei der Serialisierung und Deserialisierung komplexer Datenstrukturen. Beim Umgang mit abgeleiteten Typen ist es wichtig, die Typinformationen während der Serialisierung beizubehalten, damit sie korrekt deserialisiert werden.
Json.NET implementiert diese Funktionalität über das JsonSerializerSettings
-Attribut des TypeNameHandling
-Objekts. Wenn Sie diese Eigenschaft auf All
setzen, schließt Json.NET den Typnamen in die serialisierte Ausgabe ein.
Betrachten Sie beispielsweise die folgenden Basis- und abgeleiteten Klassen:
<code class="language-csharp">public class Base { public string Name; } public class Derived : Base { public string Something; }</code>
So serialisieren und deserialisieren abgeleitete Typen:
<code class="language-csharp">// 序列化 var object1 = new Base() { Name = "Object1" }; var object2 = new Derived() { Something = "Some other thing" }; var inheritanceList = new List<Base>() { object1, object2 }; JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All }; string serialized = JsonConvert.SerializeObject(inheritanceList, settings); // 反序列化 var deserializedList = JsonConvert.DeserializeObject<List<Base>>(serialized, settings);</code>
Mit diesem Ansatz behält Json.NET Typinformationen bei, sodass abgeleitete Typen erfolgreich deserialisiert werden können. Es ist jedoch wichtig zu beachten, dass die serialisierte Ausgabe die mit den Objekten verknüpften Typen und alle zu deren Speicherung verwendeten Listen enthält.
Das obige ist der detaillierte Inhalt vonWie kann Json.net mit der Serialisierung und Deserialisierung abgeleiteter Typen umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!