ネストされた JSON オブジェクトの逆シリアル化の処理
コード内で、ネストされたオブジェクトを含む JSON データの逆シリアル化で問題が発生しています。このガイドでは、この問題に対処し、提供された JSON からジョブ コードのリストを取得するための解決策を提供します。
一貫性のないクラス構造
最初に、「jobcodes」キーの下に複数のジョブ コードがあることを無視して、JSON 応答全体を単一の JobCode
クラスに逆シリアル化しようとします。この問題を解決するには、JSON 構造に一致するクラスを作成する必要があります。
辞書を使用して変数キーを処理します
JSON の「jobcodes」属性のキーは文字列値です (この例では「1」と「2」)。この変動に対応するために、単に Dictionary<string, JobCode>
ではなく List<JobCode>
を使用します。この辞書を使用すると、それぞれのキーを使用してジョブ コードを取得できます。
クラス構造を更新しました
以下は、JSON に合わせて変更されたクラス構造です。
<code class="language-csharp">public class RootObject { [JsonProperty("results")] public Results Results { get; set; } } public class Results { [JsonProperty("jobcodes")] public Dictionary<string, JobCode> JobCodes { get; set; } } public class JobCode { [JsonProperty("_status_code")] public string StatusCode { get; set; } [JsonProperty("_status_message")] public string StatusMessage { get; set; } [JsonProperty("id")] public string Id { get; set; } [JsonProperty("name")] public string Name { get; set; } }</code>
デシリアライズを更新しました
これらのクラスを使用すると、次のコードを使用して JSON を逆シリアル化できます:
<code class="language-csharp">RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);</code>
これにより、obj
変数に逆シリアル化された JSON データが設定され、obj.Results.JobCodes
経由でジョブ コードのリストにアクセスできるようになります。
以上がネストされた JSON オブジェクトを逆シリアル化してジョブ コードのリストを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。