將複雜巢狀的JSON資料反序列化到C#類別
某些情況下,API可能會傳回包含多層巢狀物件的JSON資料。將此類資料反序列化到C#類別可能具有挑戰性,尤其是在物件結構與JSON響應不完全匹配時。
問題詳解
如範例所示,提供的JSON回應包含一個根層級的「results」對象,其中包含一個「jobcodes」對象,該物件包含多個鍵值對,表示各個職位代碼。但是,最初的C#物件設計只考慮了一個JobCode實例,這導致反序列化時傳回空值。
解
為了成功反序列化複雜JSON數據,務必建立一個與JSON回應完全一致的類別結構。在本例中:
Dictionary<string, JobCode>
的「jobcodes」屬性。這反映了JSON回應中「jobcodes」物件的動態特性。 反序列化程式碼
有了適當的類別結構,反序列化就變得很簡單了:
<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中文網其他相關文章!