Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah JSON.NET boleh menyahsiri JSON dengan kekunci dinamik ke dalam objek yang boleh diakses dengan cekap?

Bagaimanakah JSON.NET boleh menyahsiri JSON dengan kekunci dinamik ke dalam objek yang boleh diakses dengan cekap?

Patricia Arquette
Patricia Arquetteasal
2025-01-07 12:31:41539semak imbas

How can JSON.NET efficiently deserialize JSON with dynamic keys into accessible objects?

Penyahserialisasian Objek Berkunci Dinamik dengan JSON.NET

Apabila bekerja dengan data JSON yang mengandungi objek dengan kekunci dinamik, penyahserialisasian kelas konvensional boleh menimbulkan cabaran. Artikel ini akan meneroka cara menangani senario ini menggunakan JSON.NET.

Pernyataan Masalah

Pertimbangkan data JSON berikut:

{
    "users" : {
        "100034" : {
            "name"  : "tom",
            "state" : "WA",
            "id"    : "cedf-c56f-18a4-4b1"
        },
        "10045" : {
            "name"  : "steve",
            "state" : "NY",
            "id"    : "ebb2-92bf-3062-7774"
        },
        "12345" : {
            "name"  : "mike",
            "state" : "MA",
            "id"    : "fb60-b34f-6dc8-aaf7"
        }
    }
}

Bagaimana kita boleh mengakses setiap objek secara terus daripada data ini, tanpa memerlukan kunci manual menghuraikan?

Penyelesaian

JSON.NET menawarkan penyelesaian yang mudah untuk menyahsiri objek dengan kekunci dinamik menggunakan Kamus kelas. Kelas ini membolehkan kami mewakili objek JSON sebagai kamus, dengan kuncinya ialah rentetan dan nilainya ialah objek jenis T.

Pelaksanaan

Untuk mencapai ini, kami mentakrifkan dua kelas:

class RootObject
{
    public Dictionary<string, User> users { get; set; }
}

class User
{
    public string name { get; set; }
    public string state { get; set; }
    public string id { get; set; }
}
string json = @"
{
    ""users"": {
        ""10045"": {
            ""name"": ""steve"",
            ""state"": ""NY"",
            ""id"": ""ebb2-92bf-3062-7774""
        },
        ""12345"": {
            ""name"": ""mike"",
            ""state"": ""MA"",
            ""id"": ""fb60-b34f-6dc8-aaf7""
        },
        ""100034"": {
            ""name"": ""tom"",
            ""state"": ""WA"",
            ""id"": ""cedf-c56f-18a4-4b1""
        }
    }
}";

RootObject root = JsonConvert.DeserializeObject<RootObject>(json);

Penggunaan

Kod berikut menunjukkan cara untuk mengakses objek dari data desiri:

foreach (string key in root.users.Keys)
{
    Console.WriteLine("key: " + key);
    User user = root.users[key];
    Console.WriteLine("name: " + user.name);
    Console.WriteLine("state: " + user.state);
    Console.WriteLine("id: " + user.id);
    Console.WriteLine();
}

Output

Kod akan menghasilkan output berikut:

key: 10045
name: steve
state: NY
id: ebb2-92bf-3062-7774

key: 12345
name: mike
state: MA
id: fb60-b34f-6dc8-aaf7

key: 100034
name: tom
state: WA
id: cedf-c56f-18a4-4b1

Atas ialah kandungan terperinci Bagaimanakah JSON.NET boleh menyahsiri JSON dengan kekunci dinamik ke dalam objek yang boleh diakses dengan cekap?. 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