處理具有動態鍵的 JSON 資料的 C# 反序列化方法
當處理具有動態鍵的 JSON 回應(例如問題中提供的 JSON)時,將其反序列化為強型別 C# 物件會變得很棘手。由於鍵不可預測,因此無法將回應結構直接對應到類別定義。
為了解決這個問題,可以使用 C# 中動態類型的功能。透過使用 Newtonsoft JSON 函式庫的 JsonConvert.DeserializeObject
方法,可以將 JSON 反序列化為動態物件。此動態物件允許使用從 JSON 回應動態取得的字串鍵存取屬性。
例如,以下程式碼片段示範如何將提供的 JSON 回應反序列化為動態物件:
<code class="language-csharp">dynamic dynamicObject = JsonConvert.DeserializeObject<dynamic>(json);</code>
現在,您可以使用從 JSON 回應中檢索到的屬性名稱來存取 dynamicObject
的屬性,例如:
<code class="language-csharp">var nasdaqImbalanceName = dynamicObject["nasdaq_imbalance"].name; var dxOpenIMGroup = dynamicObject["DXOpen IM"].group;</code>
但是,如果需要強型別表示,則需要更進階的方法。透過建立一個包含所需屬性名稱的自訂類別來表示 JSON 結構,您可以將 JSON 回應反序列化為這些自訂物件的清單。
對於提供的 JSON 回應,以下類別定義是適當的:
<code class="language-csharp">public class Dataset { public string name { get; set; } public string group { get; set; } public string description { get; set; } }</code>
為此,您可以使用 JsonConvert
類別將 JSON 反序列化為字串鍵到 Dataset
物件的字典,然後將其轉換為物件的列表:
<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json); var datasetList = dictionary.Values.ToList();</code>
這種方法可讓您以類型安全的方式表示動態 JSON 結構,從而可以輕鬆存取 C# 應用程式中的資料。
以上是如何將帶有動態鍵的 JSON 反序列化為 C#?的詳細內容。更多資訊請關注PHP中文網其他相關文章!