ホームページ > バックエンド開発 > 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>
ログイン後にコピー
これを行うには、

クラスを使用して JSON を JsonConvert オブジェクトへの文字列キーの辞書に逆シリアル化し、それをオブジェクトのリストに変換します。 Dataset

このアプローチにより、動的な JSON 構造をタイプセーフな方法で表すことができ、C# アプリケーションのデータに簡単にアクセスできるようになります。
<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json);
var datasetList = dictionary.Values.ToList();</code>
ログイン後にコピー

以上が動的キーを使用して JSON を C# に逆シリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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