首頁 >後端開發 >C++ >如何使用 Newtonsoft.Json.Net 在 JSON 中反序列化具有動態數字鍵名稱的子物件?

如何使用 Newtonsoft.Json.Net 在 JSON 中反序列化具有動態數字鍵名稱的子物件?

Barbara Streisand
Barbara Streisand原創
2025-01-13 19:00:43203瀏覽

How to Deserialize Child Objects with Dynamic Numeric Key Names in JSON using Newtonsoft.Json.Net?

使用 Newtonsoft.Json.Net 反序列化具有動態數字鍵名的子物件

反序列化具有動態鍵名的 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中文網其他相關文章!

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