Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memetakan Medan JSON yang Dinamakan Berbeza kepada C# Properties Semasa Deserialisasi?
Tukar nama medan menggunakan JavaScriptSerializer.Deserialize
dalam C#
dalam C# menyediakan cara yang mudah untuk menyahsiri data JSON ke dalam objek C#. Walau bagaimanapun, secara lalai ia memetakan nama medan JSON terus kepada nama harta dalam objek sasaran. Ini boleh menyebabkan penyahserikatan gagal apabila nama medan JSON tidak konsisten dengan nama harta dalam objek C#. JavaScriptSerializer
1. Gunakan atribut XmlElement
. Walau bagaimanapun, seperti yang dinyatakan dalam siaran asal, kaedah ini tidak berfungsi dengan [XmlElement]
. Pemetaan nama medan hendaklah dilaksanakan menggunakan atribut JavaScriptSerializer
sebaliknya. [DataMember]
2. Gunakan DataContractJsonSerializer
Kelas
System.Runtime.Serialization
menyediakan penyelesaian yang lebih berkuasa untuk pemetaan nama medan. Nama medan JSON yang sepadan boleh ditentukan secara eksplisit dengan menggunakan atribut DataContractJsonSerializer
pada sifat objek C#. [DataMember]
<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>Dalam contoh ini, nama medan
dan user_id
JSON memetakan kepada sifat detail_level
dan UserId
dalam objek C#, masing-masing. DetailLevel
untuk menyahsiri data JSON: DataContractJsonSerializer
<code class="language-csharp">using System.Runtime.Serialization.Json; using System.Text; using System.IO; ... DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject)); MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JsonData)); DataObject dataObject = serializer.ReadObject(ms) as DataObject;</code>Dengan menggunakan atribut
dan DataContractJsonSerializer
, anda boleh menukar nama medan dengan berkesan semasa penyahserikatan JSON, memastikan pemetaan yang betul antara data JSON dan objek C#. [DataMember]
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memetakan Medan JSON yang Dinamakan Berbeza kepada C# Properties Semasa Deserialisasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!