ホームページ > バックエンド開発 > C++ > Json.NETを使用して動的キーを持つJSONをC#オブジェクトに逆シリアル化する方法は?

Json.NETを使用して動的キーを持つJSONをC#オブジェクトに逆シリアル化する方法は?

Mary-Kate Olsen
リリース: 2025-01-19 19:31:09
オリジナル
971 人が閲覧しました

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 オブジェクトのリストに逆シリアル化することです。

解決策: 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート