Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memetakan Medan JSON yang Dinamakan Berbeza kepada C# Properties Semasa Deserialisasi?

Bagaimanakah Saya Boleh Memetakan Medan JSON yang Dinamakan Berbeza kepada C# Properties Semasa Deserialisasi?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-10 09:15:42604semak imbas

How Can I Map Differently Named JSON Fields to C# Properties During Deserialization?

Tukar nama medan menggunakan JavaScriptSerializer.Deserialize dalam C#

Kelas

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

Untuk menyelesaikan masalah ini, terdapat dua kaedah biasa:

1. Gunakan atribut XmlElement

Kaedah ini melibatkan penetapan pemetaan nama medan secara manual menggunakan atribut

. 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

yang disediakan dalam ruang nama

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]

Contohnya:

<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 menggunakan

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!

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