首頁 >後端開發 >C++ >如何在 JSON.NET 中使用介面屬性反序列化 JSON?

如何在 JSON.NET 中使用介面屬性反序列化 JSON?

Susan Sarandon
Susan Sarandon原創
2025-01-18 16:11:15976瀏覽

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

在JSON.NET 中轉換用於反序列化的介面

使用JSON.NET 進行反序列化時,在處理以下類別時會出現一個常見問題:包含介面級屬性。錯誤「無法建立 IThingy 類型的實例。類型是介面或抽象類,無法實例化」表示 JSON.NET 無法反序列化介面。

要解決此問題,請使用建議的解決方案作者:@SamualDavis 在類似的線程中:

  1. 包含具體類別作為建構子參數:

    聲明具有介面屬性的類別時,將具體類別作為其建構子的參數。這樣,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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn