ホームページ >バックエンド開発 >C++ >複雑なネストされた JSON データを C# クラスに逆シリアル化するにはどうすればよいですか?

複雑なネストされた JSON データを C# クラスに逆シリアル化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-19 22:13:10489ブラウズ

How Can I Deserialize Complex Nested JSON Data into C# Classes?

複雑なネストされた JSON データを C# クラスに逆シリアル化します

場合によっては、API は複数レベルのネストされたオブジェクトを含む JSON データを返すことがあります。このようなデータを C# クラスに逆シリアル化することは、特にオブジェクト構造が JSON 応答と正確に一致しない場合には困難になる可能性があります。

問題の詳細な説明

例に示すように、提供された JSON 応答にはルートレベルの「results」オブジェクトが含まれており、このオブジェクトには、個々のジョブ コードを表す複数のキーと値のペアを含む「jobcodes」オブジェクトが含まれています。ただし、元の C# オブジェクトの設計では JobCode インスタンスが 1 つだけ考慮されていたため、逆シリアル化されたときに null 値が返されることになりました。

解決策

複雑な JSON データを正常に逆シリアル化するには、JSON 応答とまったく同じクラス構造を作成してください。この場合:

  1. ルート レベル オブジェクト: JSON 構造全体を表し、「Results」プロパティを含む「RootObject」クラスが必要です。
  2. ネストされたオブジェクト: 「Results」クラスには、タイプ Dictionary<string, JobCode> の「jobcodes」プロパティが含まれている必要があります。これは、JSON 応答内の「ジョブコード」オブジェクトの動的な性質を反映しています。
  3. JobCode クラス: 「JobCode」クラスは変更されず、個々のジョブ コードの詳細を表します。

逆シリアル化コード

適切なクラス構造を導入すると、逆シリアル化が簡単になります。

<code class="language-csharp">RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);</code>

このコード行は、「RootObject」クラスへの JSON 応答を逆シリアル化し、その「Results」プロパティと関連するジョブ コードの詳細にアクセスできるようにします。

ジョブコードリストに戻る

最終的にジョブ コードのリストを取得するには、単純なループを使用して「JobCodes」ディクショナリからジョブ コードを抽出します。

<code class="language-csharp">List<JobCode> jobCodes = new List<JobCode>();
foreach (KeyValuePair<string, JobCode> jobCode in obj.Results.JobCodes)
{
    jobCodes.Add(jobCode.Value);
}</code>

これらの手順に従うことで、ネストされたオブジェクトを含む複雑な JSON データを C# クラスに効率的に逆シリアル化でき、API 応答へのアクセスと処理が容易になります。

以上が複雑なネストされた JSON データを C# クラスに逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。