ホームページ >バックエンド開発 >C++ >JSON.NET で JSON インターフェイス レベルのプロパティを逆シリアル化するにはどうすればよいですか?

JSON.NET で JSON インターフェイス レベルのプロパティを逆シリアル化するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-18 16:06:11917ブラウズ

How Can I Deserialize JSON Interface-Level Properties in JSON.NET?

JSON.NET デシリアライゼーションとインターフェイス プロパティ: 実用的なソリューション

JSON.NET を使用して JSON データを C# オブジェクトに逆シリアル化すると、インターフェイス型のプロパティを処理するときに問題が発生する可能性があります。 よくあるエラーが発生します: JSON.NET はインターフェイスを直接インスタンス化できません。

解決策は、クラスのコンストラクター内で具体的なクラス パラメーターを利用することにあります。 これにより、逆シリアル化中に JSON.NET が正しい具象クラスに誘導されます。

これが例です:

<code class="language-csharp">public class Visit : IVisit
{
    // Constructor crucial for JSON.NET to identify concrete types for deserialization.
    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; }
}</code>

コンストラクターに MyLocationGuest (それぞれ ILocationIGuest を実装する具象クラス) を含めることで、JSON.NET は JSON データを適切な型に適切にマップでき、インターフェイスのインスタンス化の問題を解決できます。 このアプローチにより、スムーズな逆シリアル化を確保しながらインターフェイスの柔軟性を維持できます。

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

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