ホームページ >バックエンド開発 >C++ >Json.net は派生型のシリアル化と逆シリアル化をどのように処理できますか?

Json.net は派生型のシリアル化と逆シリアル化をどのように処理できますか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-21 18:28:10947ブラウズ

How Can Json.net Handle Serializing and Deserializing Derived Types?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。