ホームページ >バックエンド開発 >C++ >Json.Net を使用してインターフェイス インスタンスのコレクションを逆シリアル化するにはどうすればよいですか?

Json.Net を使用してインターフェイス インスタンスのコレクションを逆シリアル化するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-06 05:59:48333ブラウズ

How Can I Deserialize Collections of Interface Instances Using Json.Net?

インターフェイス インスタンス コレクションの逆シリアル化

例の ClassToSerializeViaJson のように、データをインターフェイスのインスタンスとして保存するのが一般的です。ただし、そのようなコレクションを逆シリアル化すると、質問で述べたようなエラーが発生する可能性があります。

解決策:

この問題を解決するには、Json.Net で逆シリアル化を有効にする追加の構成が必要です。インターフェースのインスタンス.

  1. シリアル化:

    • TypeNameHandling を Objects に設定して、JSON ペイロードに型名を含めます。
    • FormatterAssemblyStyle.Simple を使用して型名を簡略化しますformat.
string serializedJson = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects,
    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
});
  1. 逆シリアル化:

    • TypeNameHandling を Objects に設定して型を有効にします中の識別deserialization.
var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects
});

これらの設定を実装すると、Json.Net はインターフェイス インスタンス コレクションを適切に逆シリアル化でき、元のデータ構造を回復できます。

以上がJson.Net を使用してインターフェイス インスタンスのコレクションを逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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