Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyahserialisasikan JSON Bersarang kepada Kamus Bersarang dalam C#?

Bagaimana untuk Menyahserialisasikan JSON Bersarang kepada Kamus Bersarang dalam C#?

Susan Sarandon
Lepaskan: 2024-12-29 20:10:20
asal
692 orang telah melayarinya

How to Deserialize Nested JSON to a Nested Dictionary in C#?

Menyahsiri JSON Bersarang kepada Kamus Bersarang dalam C

Apabila bekerja dengan objek JSON bersarang, anda mungkin mahu menyahsirikannya menjadi Kamus di mana setiap pasangan nilai kunci sepadan dengan pasangan nilai harta dalam objek JSON. Walau bagaimanapun, secara lalai, System.Text.Json menyahsiri semua objek ke dalam objek JsonElement, yang mungkin tidak menyediakan jenis C# yang diingini.

JsonConverter Tersuai

Untuk mencapai jenis C# yang betul, anda perlu mencipta JsonConverter tersuai. Penukar berikut akan mengendalikan semua jenis nilai JSON dan menukarnya kepada jenis C# yang sepadan:

public class ObjectAsPrimitiveConverter : JsonConverter<object>
{
    ...

    public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        switch (reader.TokenType)
        {
            // Handle null, boolean, string, and number types.

            case JsonTokenType.StartArray:
                // Handle arrays.

            case JsonTokenType.StartObject:
                // Handle objects.

            default:
                throw new JsonException("Unknown token");
        }
    }
}
Salin selepas log masuk

Menggunakan Penukar

Untuk menggunakan penukar tersuai, nyatakan dalam pilihan penyahserikatan anda:

var options = new JsonSerializerOptions
{
    Converters = { new ObjectAsPrimitiveConverter() },
};

dynamic d = JsonSerializer.Deserialize<dynamic>(json, options);
Salin selepas log masuk

Nota

  • JSON boleh mewakili nombor dengan sewenang-wenangnya ketepatan dan magnitud, manakala jenis angka primitif bersih mempunyai had. Anda boleh mengkonfigurasi sama ada nombor yang tidak disokong dikembalikan sebagai JsonElements atau pengecualian dilemparkan.
  • Anda boleh menyesuaikan penukar untuk mengembalikan dua kali ganda atau perpuluhan untuk nombor titik terapung dan Kamus atau ExpandoObject untuk objek JSON berdasarkan pilihan anda.

Atas ialah kandungan terperinci Bagaimana untuk Menyahserialisasikan JSON Bersarang kepada Kamus Bersarang dalam C#?. 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