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>
透過在建構函數中包含MyLocation
和Guest
(分別實作ILocation
和IGuest
的具體類別),JSON.NET 可以成功地將JSON 資料對應到適當的類型,從而克服介面實例化問題。 這種方法可以讓您保留介面的彈性,同時確保反序列化的順利進行。
以上是如何在 JSON.NET 中反序列化 JSON 介面級屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!