Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh mengendalikan data yang hilang dengan anggun apabila menyahsiri JSON kepada C# menggunakan JSON.NET?

Bagaimanakah saya boleh mengendalikan data yang hilang dengan anggun apabila menyahsiri JSON kepada C# menggunakan JSON.NET?

Susan Sarandon
Lepaskan: 2025-01-26 16:36:11
asal
959 orang telah melayarinya

How can I gracefully handle missing data when deserializing JSON to C# using JSON.NET?

Gunakan json.net ke siri untuk menyusun data JSON ke C#: memproses data yang hilang dengan elegan

Apabila memproses data JSON dalam C#, adalah penting untuk memproses keadaan di mana struktur JSON tidak mempunyai atribut tertentu yang ditakrifkan dalam kelas C#. Secara tradisinya, kaedah mengekstrak setiap nilai secara manual dari objek JSON adalah membosankan dan mudah membuat kesilapan.

Untungnya, json.net menyediakan penyelesaian yang elegan. Dengan membuat kelas C#yang mencerminkan struktur JSON yang anda analisis, anda boleh menggunakan kaedah

. Kaedah ini secara automatik akan memetakan atribut JSON ke atribut yang sepadan di dalam kelas.

Contohnya, pertimbangkan data JSON berikut: JsonConvert.DeserializeObject

dan kelas C#yang sepadan:

<code class="language-json">{
    "givenname": [
        "Robert"
    ],
    "passwordexpired": "20091031041550Z",
    "accountstatus": [
        "active"
    ],
    "accountstatusexpiration": [
        "20100612000000Z"
    ],
    "accountstatusexpmaxdate": [
        "20110410000000Z"
    ],
    "accountstatusmodifiedby": {
        "20100214173242Z": "tdecker",
        "20100304003242Z": "jsmith",
        "20100324103242Z": "jsmith",
        "20100325000005Z": "rjones",
        "20100326210634Z": "jsmith",
        "20100326211130Z": "jsmith"
    },
    "accountstatusmodifytimestamp": [
        "20100312001213Z"
    ],
    "affiliation": [
        "Employee",
        "Contractor",
        "Staff"
    ],
    "affiliationmodifytimestamp": [
        "20100312001213Z"
    ],
    "affiliationstatus": [
        "detached"
    ],
    "entrycreatedate": [
        "20000922072747Z"
    ],
    "username": [
        "rjohnson"
    ],
    "primaryaffiliation": [
        "Staff"
    ],
    "employeeid": [
        "999777666"
    ],
    "sn": [
        "Johnson"
    ]
}</code>
Salin selepas log masuk

Menggunakan kaedah , anda boleh menyusun semula data JSON ke dalam contoh kelas

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

    [JsonProperty(PropertyName = "givenname")]
    public string GivenName { get; set; }

    [JsonProperty(PropertyName = "sn")]
    public string Surname { get; set; }

    [JsonProperty(PropertyName = "passwordexpired")]
    public DateTime PasswordExpire { get; set; }

    [JsonProperty(PropertyName = "primaryaffiliation")]
    public string PrimaryAffiliation { get; set; }

    [JsonProperty(PropertyName = "affiliation")]
    public string[] Affiliation { get; set; }

    [JsonProperty(PropertyName = "affiliationstatus")]
    public string AffiliationStatus { get; set; }

    [JsonProperty(PropertyName = "affiliationmodifytimestamp")]
    public DateTime AffiliationLastModified { get; set; }

    [JsonProperty(PropertyName = "employeeid")]
    public string EmployeeID { get; set; }

    [JsonProperty(PropertyName = "accountstatus")]
    public string AccountStatus { get; set; }

    [JsonProperty(PropertyName = "accountstatusexpiration")]
    public DateTime AccountStatusExpiration { get; set; }

    [JsonProperty(PropertyName = "accountstatusexpmaxdate")]
    public DateTime AccountStatusExpirationMaxDate { get; set; }

    [JsonProperty(PropertyName = "accountstatusmodifiedby")]
    public Dictionary<string, string> AccountStatusModifiedBy { get; set; }

    [JsonProperty(PropertyName = "accountstatusmodifytimestamp")]
    public DateTime AccountStatusModified { get; set; }

    [JsonProperty(PropertyName = "accountstatusexpnotice")]
    public string AccountStatusExpNotice { get; set; }

    [JsonProperty(PropertyName = "entrycreatedate")]
    public DateTime EntryCreatedate { get; set; }

    [JsonProperty(PropertyName = "entrydeactivationdate")]
    public DateTime EntryDeactivationDate { get; set; }
}</code>
Salin selepas log masuk

JsonConvert.DeserializeObject Ini secara automatik akan menggunakan nilai MyAccount dalam data JSON.

<code class="language-csharp">var myAccount = JsonConvert.DeserializeObject<MyAccount>(jsonString);</code>
Salin selepas log masuk
Walaupun struktur JSON tidak mempunyai atribut tertentu, seperti

atau myAccount, proses bergantung akan dijalankan dengan lancar, dan atribut yang sepadan dalam Kelas C#akan ditetapkan pada nilai senyapnya. Kaedah ini menghapuskan keperluan keadaan kompleks atau tugasan nilai manual, dan memudahkan proses penukaran data anda.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengendalikan data yang hilang dengan anggun apabila menyahsiri JSON kepada C# menggunakan JSON.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan