ホームページ > バックエンド開発 > C++ > JSON.NET を使用してインターフェイス インスタンスのコレクションを逆シリアル化する方法

JSON.NET を使用してインターフェイス インスタンスのコレクションを逆シリアル化する方法

Mary-Kate Olsen
リリース: 2025-01-06 07:08:41
オリジナル
508 人が閲覧しました

How to Deserialize Collections of Interface Instances with JSON.NET?

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

問題:

インターフェイス インスタンスのコレクションを逆シリアル化しようとしたときJSON.NET を使用したインターフェイス インスタンス、エラー「タイプのインスタンスを作成できませんでした」 ITestInterface. 型はインターフェイスまたは抽象クラスであるためインスタンス化できません。

解決策:

型名の処理の使用:

JSON.NET は、インターフェイス インスタンスの逆シリアル化を処理する「型名処理」と呼ばれるメカニズムを提供します。 JsonSerializerSettings オブジェクトの TypeNameHandling プロパティを TypeNameHandling.Objects に指定すると、JSON.NET は JSON データとともにインターフェイス実装の型名をシリアル化します。

逆シリアル化中に、JSON.NET は指定された型名を使用します。インターフェイス実装の適切なインスタンスを作成します。 TypeNameAssemblyFormat プロパティを FormatterAssemblyStyle.Simple.

Code に設定することで、より正確な逆シリアル化のために型のアセンブリ名を指定することもできます。例:

シリアル化:

string serializedJson = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects,
    TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
});
ログイン後にコピー

逆シリアル化:

var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects
});
ログイン後にコピー

型名処理を使用する, JSON.NET は、インターフェイス インスタンスのコレクションを効果的に逆シリアル化し、正しい実装が作成されます。

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

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