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
Lepaskan: 2025-01-07 12:31:41
asal
574 orang telah melayarinya

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

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; }
}
Salin selepas log masuk
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);
Salin selepas log masuk

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();
}
Salin selepas log masuk

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

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!

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