ホームページ > バックエンド開発 > C++ > Json.net を使用して基本型と派生型のリストを逆シリアル化し、実際の型を保持するにはどうすればよいですか?

Json.net を使用して基本型と派生型のリストを逆シリアル化し、実際の型を保持するにはどうすればよいですか?

DDD
リリース: 2025-01-21 18:35:09
オリジナル
906 人が閲覧しました

How Can I Deserialize a List of Base and Derived Types Using Json.net and Preserve Their Actual Types?

Json.net を使用した派生型の逆シリアル化

基底クラス Base と派生クラス Derived があり、DerivedBase を継承しているとします。 Base オブジェクトのリストがあり、これには BaseDerived のインスタンスが含まれています。このリストの JSON 表現を逆シリアル化するときは、派生型を Base オブジェクトとしてだけでなく、実際の型として取得する必要があります。

これを実現するために、Json.net は 型名の処理 と呼ばれる機能を提供します。この機能を有効にし、設定パラメーターとしてシリアル化および逆シリアル化操作に渡すことにより、シリアル化された JSON に含めるオブジェクト タイプを指定できます。

<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>
ログイン後にコピー

が逆シリアル化されると、deserializedList には正しいタイプの Base および Derived オブジェクトが含まれるようになります。ただし、型名の処理を有効にすると欠点があり、シリアル化された JSON にすべてのオブジェクトとリストの名前が含まれるため、場合によっては理想的ではない可能性があります。

以上がJson.net を使用して基本型と派生型のリストを逆シリアル化し、実際の型を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート