首頁 >後端開發 >C++ >如何使用 Json.NET 將帶有動態鍵的 JSON 反序列化為 C# 物件?

如何使用 Json.NET 將帶有動態鍵的 JSON 反序列化為 C# 物件?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-19 19:31:091013瀏覽

How to Deserialize JSON with Dynamic Keys into a C# Object Using Json.NET?

在C#中處理動態鍵JSON反序列化

當接收具有動態鍵的JSON回應時,將其反序列化到具有預定義資料模型的C#物件可能會很棘手。本文討論了一種特定場景,其中JSON響應包含具有動態鍵的物件。

以下JSON回應說明了這個問題:

<code>{
"nasdaq_imbalance": 
{
    "name": "nasdaq_imbalance", 
    "group": "Market Data", 
    "description": null
},
"DXOpen IM": 
{
    "name": "DXOpen IM", 
    "group": "Daily",
    "description": null
}, 
"Float Shares": 
{
    "name": "Float Shares", 
    "group": "Daily", 
    "description": null
}, 
}</code>

目標是將此JSON反序列化為Dataset物件的列表,這些物件具有name、group和description屬性。

解決方案:使用Json.NET和字典

Json.NET提供了一個將具有動態鍵的JSON反序列化到C#物件的解決方案。透過使用JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json),您可以將JSON反序列化為一個字典,其中鍵是來自JSON回應的動態鍵,值是Dataset物件。

以下程式碼示範了此解決方案:

<code class="language-csharp">using Newtonsoft.Json;

...

// 将JSON反序列化到一个包含动态键和Dataset对象的字典中
var json = @"{
""nasdaq_imbalance"": 
{
    ""name"": ""nasdaq_imbalance"", 
    ""group"": ""Market Data"", 
    ""description"": null
},
""DXOpen IM"": 
{
    ""name"": ""DXOpen IM"", 
    ""group"": ""Daily"",
    ""description"": null
}, 
""Float Shares"": 
{
    ""name"": ""Float Shares"", 
    ""group"": ""Daily"", 
    ""description"": null
}, 
}";
var datasetDictionary = JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json);

// 使用动态键作为字典键访问Dataset对象
foreach (var dataset in datasetDictionary.Values)
{
    Console.WriteLine($"Dataset: {dataset.name}, Group: {dataset.group}, Description: {dataset.description}");
}</code>

此解決方案可讓您將具有動態鍵的JSON反序列化到C#對象,同時保留原始鍵值結構。

以上是如何使用 Json.NET 將帶有動態鍵的 JSON 反序列化為 C# 物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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