將具有固定模式的值數組反序列化到強型別資料類
問題:
將特定格式的 JSON 資料反序列化到強型別資料類時,會面臨挑戰。資料包含一個具有混合字串和整數值的玩家數組,並且玩家類別完全由未命名值組成,且順序固定。
解:
自訂轉換器和資料協定屬性的組合允許高效的反序列化:
建立自訂轉換器:
實作一個將物件轉換為陣列的自訂轉換器:
<code class="language-c#">public class ObjectToArrayConverter<T> : JsonConverter { // 实现 WriteJson 和 ReadJson 函数 }</code>
將自訂轉換器和資料協定屬性套用至 Player:
將自訂轉換器套用至 Player 類,並使用資料協定屬性指定其屬性的順序:
<code class="language-c#">[JsonConverter(typeof(ObjectToArrayConverter<Player>))] [DataContract] public class Player { [DataMember(Order = 1)] public int UniqueID { get; set; } [DataMember(Order = 2)] public string PlayerDescription { get; set; } }</code>
將根物件修改為字典:
將根物件中 players 屬性的類型變更為字典,使用玩家使用者名稱作為鍵:
<code class="language-c#">public class ScoreboardResults { // ... public Dictionary<string, Player> players { get; set; } }</code>
範例:
以下程式碼範例示範了使用此解決方案進行反序列化:
<code class="language-c#">using Newtonsoft.Json; var json = "{...}"; var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);</code>
其他說明:
以上是如何將混合型別值的 JSON 陣列反序列化為強型別 C# 資料類?的詳細內容。更多資訊請關注PHP中文網其他相關文章!