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
Lepaskan: 2025-01-10 09:15:42
asal
641 orang telah melayarinya

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>
Salin selepas log masuk
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>
Salin selepas log masuk
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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan