首頁 > 後端開發 > C++ > 如何將複雜的巢狀 JSON 資料反序列化到 C# 類別?

如何將複雜的巢狀 JSON 資料反序列化到 C# 類別?

Patricia Arquette
發布: 2025-01-19 22:13:10
原創
488 人瀏覽過

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

將複雜巢狀的JSON資料反序列化到C#類別

某些情況下,API可能會傳回包含多層巢狀物件的JSON資料。將此類資料反序列化到C#類別可能具有挑戰性,尤其是在物件結構與JSON響應不完全匹配時。

問題詳解

如範例所示,提供的JSON回應包含一個根層級的「results」對象,其中包含一個「jobcodes」對象,該物件包含多個鍵值對,表示各個職位代碼。但是,最初的C#物件設計只考慮了一個JobCode實例,這導致反序列化時傳回空值。

為了成功反序列化複雜JSON數據,務必建立一個與JSON回應完全一致的類別結構。在本例中:

  1. 根層級物件:需要一個「RootObject」類別來表示整體JSON結構並包含一個「Results」屬性。
  2. 巢狀物件:「Results」類別應包含一個類型為Dictionary<string, JobCode>的「jobcodes」屬性。這反映了JSON回應中「jobcodes」物件的動態特性。
  3. JobCode類別:「JobCode」類別保持不變,表示單一職位代碼詳細資料。

反序列化程式碼

有了適當的類別結構,反序列化就變得很簡單了:

<code class="language-csharp">RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);</code>
登入後複製

這行程式碼將JSON回應反序列化到「RootObject」類,讓您可以存取其「Results」屬性和相關的職位代碼詳細資料。

返回JobCodes清單

為了最終檢索職位代碼列表,您可以使用簡單的循環從“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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板