Json.NET での派生型のシリアル化と逆シリアル化 (Newtonsoft)
Json.NET は、複雑なデータ構造をシリアル化および逆シリアル化する際の柔軟性を提供します。派生型を扱う場合、正しく逆シリアル化できるように、シリアル化中に型情報を保持することが重要です。
Json.NET は、JsonSerializerSettings
オブジェクトの TypeNameHandling
属性を通じてこの機能を実装します。このプロパティを All
に設定すると、Json.NET はシリアル化された出力に型名を含めます。
たとえば、次の基本クラスと派生クラスについて考えてみましょう:
<code class="language-csharp">public class Base { public string Name; } public class Derived : Base { public string Something; }</code>
派生型をシリアル化および逆シリアル化するには:
<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>
このアプローチにより、Json.NET は型情報を保持し、派生型を正常に逆シリアル化できるようになります。ただし、シリアル化された出力には、オブジェクトに関連付けられた型と、それらを保持するために使用されるリストが含まれることに注意することが重要です。
以上がJson.net は派生型のシリアル化と逆シリアル化をどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。