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 オブジェクトのリストに逆シリアル化することです。
解決策: Json.NET と辞書を使用します
Json.NET は、C# オブジェクトへの動的キーを使用して JSON を逆シリアル化するソリューションを提供します。 JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json)
を使用すると、キーが JSON 応答からの動的キーであり、値が Dataset オブジェクトであるディクショナリに JSON を逆シリアル化できます。
次のコードは、この解決策を示しています:
<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 中国語 Web サイトの他の関連記事を参照してください。