反序列化具有動態鍵名的 JSON 資料可能具有挑戰性,尤其是在鍵為數字時。以下是使用 Newtonsoft.Json.Net 解決此問題的方法。
提供的 JSON 結構包含一個父級「users」對象,其中包含已知和未知屬性。為了適應未知屬性,需要一個自訂轉換器。
TypedExtensionDataConverter 類別是一個自訂 JSON 轉換器,用於處理具有動態屬性的物件的反序列化。它確保未知屬性反序列化到一個類型化容器中,在本例中為 User 物件的字典。
此轉換器使用 JsonTypedExtensionDataAttribute 屬性來識別應包含動態資料的屬性。
為了使用自訂轉換器,「Users」和「User」類別被修改為包含屬性和轉換器。
Users 類別:
<code>[JsonConverter(typeof(TypedExtensionDataConverter<Users>))] class Users { ... [JsonTypedExtensionData] public Dictionary<string, User> UserTable { get; set; } }</code>
User 類別保持不變。
使用自訂轉換器和修改後的類別定義,可以如下執行反序列化:
<code>string json = @"...与之前相同的 JSON..."; RootObject root = JsonConvert.DeserializeObject<RootObject>(json);</code>
Users 物件中的 UserTable 屬性現在將包含反序列化的 User 對象,從而可以存取其資料。
透過使用自訂 JSON 轉換器,可以反序列化具有動態數字鍵名的子對象,從而可以無縫處理複雜的 JSON 結構。
以上是如何使用 Newtonsoft.Json.Net 在 JSON 中反序列化具有動態數字鍵名稱的子物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!