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>
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>
JsonConvert.DeserializeObject
Ini secara automatik akan menggunakan nilai MyAccount
dalam data JSON.
<code class="language-csharp">var myAccount = JsonConvert.DeserializeObject<MyAccount>(jsonString);</code>
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!