首頁 > 後端開發 > C++ > 如何使用 JsonConvert.DeserializeObject 成功將 JSON 反序列化為 C# POCO 類別?

如何使用 JsonConvert.DeserializeObject 成功將 JSON 反序列化為 C# POCO 類別?

Barbara Streisand
發布: 2025-01-15 11:42:43
原創
482 人瀏覽過

How to Successfully Deserialize JSON into a C# POCO Class Using JsonConvert.DeserializeObject?

利用JsonConvert.DeserializeObject將JSON解析到C# POCO類別

在將JSON反序列化到C# POCO類別時遇到錯誤(例如「無法反序列化…」異常)時,理解成功反序列化的要求至關重要。

具體來說,JsonConvert.DeserializeObject 方法要求JSON符合POCO類別中定義的預期結構和資料類型。

解決錯誤

解決此錯誤的關鍵在於兩個方面:

  1. 正確聲明列表屬性: 確保JSON回應中包含一個物件數組,用於在POCO類別中聲明為List<T>的屬性。例如:

    <code class="language-json"> {
       "username": "username",
       // ... 其他属性
       "accounts": [
         { "github": "github-username" },
         // ... 其他帐户
       ]
     }</code>
    登入後複製

    在POCO類中,Accounts屬性應宣告為:

    <code class="language-csharp"> [JsonProperty("accounts")]
     public List<Account> Accounts { get; set; }</code>
    登入後複製
  2. 使用JsonProperty屬性: JsonProperty 屬性將JSON屬性名稱對應到對應的POCO類別屬性。預設情況下,JSON屬性名稱區分大小寫,並與C#屬性名稱相符。若要自訂此映射,請使用JsonProperty 屬性:

    <code class="language-csharp"> [JsonProperty("github")]
     public string GithubUsername { get; set; }</code>
    登入後複製

範例

這是一個修正後的範例:

<code class="language-csharp">public class User
{
    [JsonProperty("username")]
    public string Username { get; set; }
    // ... 其他属性
    [JsonProperty("accounts")]
    public List<Account> Accounts { get; set; }
}

public class Account
{
    [JsonProperty("github")]
    public string GithubUsername { get; set; }
}

// 反序列化代码
var json = @"{
  'username': 'jdoe',
  // ... 其他属性
  'accounts': [{ 'github': 'jdoe-github' }]
}";
var user = JsonConvert.DeserializeObject<User>(json);</code>
登入後複製

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

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