Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memetakan Nama Medan JSON kepada .NET Object Properties Menggunakan JavaScriptSerializer atau DataContractJsonSerializer?
Memetakan Nama Medan JSON kepada .NET Object Properties
Menghuraikan data JSON ke dalam objek .NET selalunya memerlukan pemetaan nama medan JSON kepada sifat objek yang sepadan. Ini menjadi penting apabila nama medan JSON berbeza daripada nama harta .NET. Walaupun JavaScriptSerializer.Deserialize
mungkin kelihatan mudah, ia tidak selalunya boleh dipercayai mengendalikan ketidakpadanan nama. Penyelesaian yang lebih mantap menggunakan DataContractJsonSerializer
.
Menggunakan DataContractJsonSerializer untuk Pemetaan Boleh Dipercayai
DataContractJsonSerializer
menyediakan kawalan tepat ke atas pemetaan nama medan melalui atribut DataMember
. Begini caranya:
<code class="language-csharp">[DataContract] public class DataObject { [DataMember(Name = "user_id")] public int UserId { get; set; } [DataMember(Name = "detail_level")] public string DetailLevel { get; set; } }</code>
Kod ini mentakrifkan kelas DataObject
. Atribut DataMember
secara eksplisit memetakan medan JSON "id_pengguna" dan "peringkat_perincian" kepada sifat .NET UserId
dan DetailLevel
masing-masing.
Deserialisasi kemudiannya mudah:
<code class="language-csharp">DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject)); MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JsonData)); DataObject dataObject = serializer.ReadObject(ms) as DataObject;</code>
Coretan kod ini menyahsiri data JSON (JsonData
) menjadi contoh DataObject
.
Pertimbangan:
DataContractJsonSerializer
menawarkan keupayaan pemetaan yang unggul berbanding JavaScriptSerializer
, ia mungkin lebih terperinci.DetailLevel
sifat yang ditakrifkan sebagai enum, DataContractResolver
tersuai boleh memudahkan pemetaan nilai.DataContractJsonSerializer
juga serasi dengan Silverlight.Atas ialah kandungan terperinci Bagaimana untuk Memetakan Nama Medan JSON kepada .NET Object Properties Menggunakan JavaScriptSerializer atau DataContractJsonSerializer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!