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

JSON.NET のインターフェイス プロパティを使用して JSON を逆シリアル化する方法は?

Susan Sarandon
リリース: 2025-01-18 16:11:15
オリジナル
946 人が閲覧しました

How to Deserialize JSON with Interface Properties in JSON.NET?

JSON.NET での逆シリアル化用のインターフェイスのキャスト

逆シリアル化のために JSON.NET を使用する場合、次のようなクラスを扱うときに一般的な問題が発生します。インターフェースレベルのプロパティが含まれます。 「タイプ IThingy のインスタンスを作成できませんでした。タイプはインターフェイスまたは抽象クラスなのでインスタンス化できません」というエラーは、JSON.NET がインターフェイスを逆シリアル化できないことを示します。

これを解決するには、提案されたソリューションを利用してください。 @SamualDavis による同様のスレッド:

  1. Include Concreteコンストラクター パラメーターとしてのクラス:

    インターフェイス プロパティを持つクラスを宣言する場合、具体的なクラスをパラメーターとしてコンストラクターに含めます。このようにして、JSON.NET は逆シリアル化中に使用される特定のクラスを識別できます。

  2. コンストラクターの例:

    public class Visit : IVisit
    {
        /// <summary>
        /// This constructor is required for the JSON deserializer to be able
        /// to identify concrete classes to use when deserializing the interface properties.
        /// </summary>
        public Visit(MyLocation location, Guest guest)
        {
            Location = location;
            Guest = guest;
        }
        public long VisitId { get; set; }
        public ILocation Location { get;  set; }
        public DateTime VisitDate { get; set; }
        public IGuest Guest { get; set; }
    }
    ログイン後にコピー

このアプローチに従うことで、JSON.NET は JSON オブジェクトを C# に正常に逆シリアル化できるようになります。オブジェクトにインターフェイスレベルのプロパティが含まれている場合でも。

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

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