首頁 > 後端開發 > C++ > 如何將帶有動態鍵的 JSON 反序列化為 C#?

如何將帶有動態鍵的 JSON 反序列化為 C#?

Mary-Kate Olsen
發布: 2025-01-19 19:37:12
原創
337 人瀏覽過

How to Deserialize JSON with Dynamic Keys into C#?

處理具有動態鍵的 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板