Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyahseri Tatasusunan JSON bagi Nilai Jenis Campuran ke dalam Kelas C# yang Ditaip Kuat?

Bagaimana untuk Menyahseri Tatasusunan JSON bagi Nilai Jenis Campuran ke dalam Kelas C# yang Ditaip Kuat?

Susan Sarandon
Lepaskan: 2025-01-24 04:11:08
asal
384 orang telah melayarinya

How to Deserialize a JSON Array of Mixed-Type Values into a Strongly-Typed C# Class?

Menyahsiri Tatasusunan JSON dengan Jenis Data Campuran ke dalam Kelas C#

Panduan ini menangani kerumitan menyahsiri data JSON di mana strukturnya memberikan cabaran untuk pemetaan langsung kepada kelas C# taip kuat. Khususnya, kami akan menangani senario yang melibatkan tatasusunan jenis data bercampur dalam struktur yang kelihatan seperti kamus.

Masalahnya:

Struktur JSON biasa mungkin membentangkan data di mana:

  • Tatasusunan Tidak Bernama: Tatasusunan nilai kekurangan nama harta yang jelas, menyukarkan penyahserikatan langsung.
  • Jenis Data Campuran: Tatasusunan mengandungi unsur pelbagai jenis (cth., integer, rentetan).
  • Struktur seperti kamus: Struktur keseluruhan menyerupai kamus, tetapi nilainya ialah tatasusunan bermasalah ini.

Penyelesaian:

Beberapa teknik boleh mengatasi halangan ini:

1. Memanfaatkan ObjectToArrayConverter:

Json.NET ObjectToArrayConverter menyediakan mekanisme yang berkuasa untuk memetakan tatasusunan nilai kepada sifat objek C#. Ini memerlukan pertimbangan yang teliti terhadap susunan harta tanah.

<code class="language-csharp">[JsonConverter(typeof(ObjectToArrayConverter<Player>))]
public class Player
{
    [JsonProperty(Order = 1)]
    public int UniqueID { get; set; }
    [JsonProperty(Order = 2)]
    public string PlayerDescription { get; set; }
    // ... other properties
}</code>
Salin selepas log masuk

Sifat JsonProperty atribut Order adalah penting; ia memastikan pemetaan elemen tatasusunan yang betul kepada sifat berdasarkan jujukannya.

2. Menstruktur semula Objek Akar:

Pendekatan yang lebih mudah mungkin melibatkan penstrukturan semula objek akar untuk mewakili secara langsung sifat data seperti kamus.

<code class="language-csharp">public class ScoreboardResults
{
    // ... other properties
    public Dictionary<string, Player> Players { get; set; }
}</code>
Salin selepas log masuk

Ini memudahkan penyahserikatan dengan ketara, kerana kunci dan nilai kamus secara langsung sepadan dengan struktur JSON.

3. Penukar Tersuai (Lanjutan):

Untuk senario yang kompleks, JsonConverter tersuai menawarkan kawalan yang paling banyak. Ini membolehkan logik penghuraian rumit yang disesuaikan dengan struktur JSON tertentu.

Contoh (Menggunakan ObjectToArrayConverter):

<code class="language-csharp">// Sample JSON (replace with your actual JSON)
string jsonString = "...";

// Deserialize using ObjectToArrayConverter
var results = JsonConvert.DeserializeObject<ScoreboardResults>(jsonString);

// Access player data
foreach (var kvp in results.Players)
{
    Console.WriteLine($"{kvp.Key}: {kvp.Value.UniqueID} - {kvp.Value.PlayerDescription}");
}</code>
Salin selepas log masuk

Ingat untuk memasang pakej Newtonsoft.Json NuGet untuk fungsi Json.NET. Pilih penyelesaian yang paling sesuai dengan struktur dan kerumitan JSON anda. Penstrukturan semula objek akar selalunya memberikan penyelesaian yang paling mudah dan paling boleh diselenggara. ObjectToArrayConverter ialah alat berkuasa untuk senario yang lebih rumit yang memerlukan kawalan pesanan harta benda yang tepat. Penukar tersuai harus dipertimbangkan hanya apabila kaedah lain tidak mencukupi.

Atas ialah kandungan terperinci Bagaimana untuk Menyahseri Tatasusunan JSON bagi Nilai Jenis Campuran ke dalam Kelas C# yang Ditaip Kuat?. 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