Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk membuat objek C# yang sangat ditaip dari JSON dengan IDS sebagai kunci?

Bagaimana untuk membuat objek C# yang sangat ditaip dari JSON dengan IDS sebagai kunci?

DDD
Lepaskan: 2025-01-30 00:24:11
asal
996 orang telah melayarinya

How to Create Strongly Typed C# Objects from JSON with IDs as Keys?

Gunakan ID sebagai nama untuk membuat objek jenis C# yang kuat dari JSON

Apabila menemui tindak balas API seperti objek JSON, nombor ID digunakan sebagai pengenal untuk data, dan mungkin sukar untuk membuat objek C# jenis yang kuat untuk menangani mereka. Marilah kita menyelesaikan masalah ini.

pertimbangkan tindak balas JSON berikut:

Untuk membuat objek jenis yang kuat, kami menentukan:
<code class="language-json">{
    "5234592":{
        "pollsAndSurveys":{
            "questionsAsked":1,
            ...
            "pollCount":2},
        "attendance":{
            "averageAttendanceTimeSeconds":253,
            ...
            "percentageAttendance":100}
        },
    "5235291":{
        "pollsAndSurveys":{
            "questionsAsked":2,
            ...
            "pollCount":0},
        "attendance":{
            "averageAttendanceTimeSeconds":83,
            ...
            "percentageAttendance":100}
        }
}</code>
Salin selepas log masuk

Walau bagaimanapun, kita menghadapi soalan: Objek akar di JSON tidak sepadan dengan jenis

yang kita harapkan.
<code class="language-csharp">public class AttendanceStatistics
{
    [JsonProperty(PropertyName = "registrantCount")]
    public int RegistrantCount { get; set; }

    // 其他属性
}

public class PollsAndSurveysStatistics
{
    [JsonProperty(PropertyName = "pollCount")]
    public int PollCount { get; set; }

    // 其他属性
}

public class SessionPerformanceStats
{
    [JsonProperty(PropertyName = "attendance")]
    public AttendanceStatistics Attendance { get; set; }

    [JsonProperty(PropertyName = "pollsAndSurveys")]
    public PollsAndSurveysStatistics PollsAndSurveys { get; set; }
}

public class WebinarPerformanceStats
{
    public List<SessionPerformanceStats> Stats { get; set; }
}</code>
Salin selepas log masuk

Untuk menyelesaikan masalah ini, kita boleh menggunakan kamus sebagai objek akar: WebinarPerformanceStats

json.net berkesan mengendalikan siri dan peranti kamus untuk menukar nama atribut ke dalam kunci kamus. Dalam kes ini, nombor ID akan dijalankan ke dalam kunci kamus. Sekiranya anda sanggup, anda boleh mengisytiharkan mereka sebagai integer yang panjang:

<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<string, SessionPerformanceStats>>(theJsonResponse);</code>
Salin selepas log masuk

melalui kaedah ini, kini anda boleh mengubah respons JSON ke belakang

atau
<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<long, SessionPerformanceStats>>(theJsonResponse);</code>
Salin selepas log masuk
, di mana nombor ID digunakan sebagai kunci untuk mengakses statistik sesi tunggal.

Atas ialah kandungan terperinci Bagaimana untuk membuat objek C# yang sangat ditaip dari JSON dengan IDS sebagai kunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan