Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Berjaya Menyahseri JSON ke dalam Kelas C# POCO Menggunakan JsonConvert.DeserializeObject?

Bagaimana untuk Berjaya Menyahseri JSON ke dalam Kelas C# POCO Menggunakan JsonConvert.DeserializeObject?

Barbara Streisand
Barbara Streisandasal
2025-01-15 11:42:43475semak imbas

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

Gunakan JsonConvert.DeserializeObject untuk menghuraikan JSON ke kelas C# POCO

Apabila menghadapi ralat (seperti "Tidak dapat menyahsiri..." pengecualian) apabila menyahsiri JSON kepada kelas C# POCO, adalah penting untuk memahami keperluan untuk penyahserikan yang berjaya.

Secara khusus, kaedah JsonConvert.DeserializeObject memerlukan JSON mematuhi struktur yang dijangkakan dan jenis data yang ditakrifkan dalam kelas POCO.

Menyelesaikan ralat

Kunci untuk menyelesaikan ralat ini terletak pada dua aspek:

  1. Istiharkan sifat senarai dengan betul: Pastikan respons JSON mengandungi tatasusunan objek untuk sifat yang diisytiharkan sebagai List<T> dalam kelas POCO. Contohnya:

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

    Dalam kelas POCO, atribut Accounts hendaklah diisytiharkan sebagai:

    <code class="language-csharp"> [JsonProperty("accounts")]
     public List<Account> Accounts { get; set; }</code>
  2. Gunakan atribut JsonProperty: JsonProperty atribut memetakan nama atribut JSON kepada atribut kelas POCO yang sepadan. Secara lalai, nama sifat JSON adalah sensitif huruf besar dan sepadan dengan nama sifat C#. Untuk menyesuaikan pemetaan ini, gunakan atribut JsonProperty:

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

Contoh

Berikut ialah contoh yang diperbetulkan:

<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>

Atas ialah kandungan terperinci Bagaimana untuk Berjaya Menyahseri JSON ke dalam Kelas C# POCO Menggunakan JsonConvert.DeserializeObject?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn