Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memetakan Nama Medan JSON kepada .NET Object Properties Menggunakan JavaScriptSerializer atau DataContractJsonSerializer?

Bagaimana untuk Memetakan Nama Medan JSON kepada .NET Object Properties Menggunakan JavaScriptSerializer atau DataContractJsonSerializer?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-10 09:04:42610semak imbas

How to Map JSON Field Names to .NET Object Properties Using JavaScriptSerializer or 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:

  • Walaupun DataContractJsonSerializer menawarkan keupayaan pemetaan yang unggul berbanding JavaScriptSerializer, ia mungkin lebih terperinci.
  • Untuk 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!

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