首頁 > 後端開發 > C++ > 如何使用 JsonConvert.DeserializeObject 將 JSON 陣列反序列化為 C# 集合?

如何使用 JsonConvert.DeserializeObject 將 JSON 陣列反序列化為 C# 集合?

Patricia Arquette
發布: 2025-01-15 08:55:45
原創
979 人瀏覽過

How to Deserialize JSON Arrays into C# Collections Using JsonConvert.DeserializeObject?

使用JsonConvert.DeserializeObject將JSON反序列化到C# POCO類別

JsonConvert.DeserializeObject是將JSON資料轉換為C#物件的有力工具。但是,當嘗試將JSON反序列化到包含集合或巢狀物件的POCO(普通舊CLR物件)類別時,可能會發生錯誤。

使用JsonConvert.DeserializeObject時遇到的一個常見問題是無法將JSON數組反序列化為強類型集合。此錯誤源自於JSON數組和.NET集合結構的根本差異。

問題辨識:陣列與物件

在提供的程式碼片段中,Accounts屬性聲明為List,期望接收表示使用者帳戶的JSON物件的陣列。但是,JSON回應包含單一對象,其中包含多個鍵值對,每個鍵值對都代表一個關聯帳戶。這種不匹配會導致“JsonObjectAttribute也可以添加到類型以強制它從JSON物件反序列化”錯誤。

解決方法:使用自訂類別和JsonProperty屬性

要解決此問題,必須定義一個自訂類別Account來表示各個帳戶,並使用[JsonProperty]屬性註解Accounts屬性以指定JSON回應中對應的屬性名稱:

<code class="language-csharp">public class Account
{
    public string github;
}

[JsonProperty("accounts")]
public Account Accounts { get; set; }</code>
登入後複製

此外,可以在User類別中使用JsonProperty屬性來明確地將屬性綁定到它們各自的JSON屬性名稱,從而確保無縫映射:

<code class="language-csharp">[JsonProperty("username")]
public string Username { get; set; }

[JsonProperty("name")]
public string Name { get; set; }

[JsonProperty("location")]
public string Location { get; set; }</code>
登入後複製

實作這些變更後,JsonConvert.DeserializeObject可以輕鬆地將JSON回應反序列化為強型別User對象,包括使用對應的關聯帳號填入的Accounts屬性。

以上是如何使用 JsonConvert.DeserializeObject 將 JSON 陣列反序列化為 C# 集合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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