Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya Boleh Menyahserialisasikan JSON Bersarang ke dalam Objek C# Ditaip?

Bagaimanakah saya Boleh Menyahserialisasikan JSON Bersarang ke dalam Objek C# Ditaip?

Susan Sarandon
Lepaskan: 2024-12-25 12:11:09
asal
500 orang telah melayarinya

How Can I Deserialize Nested JSON into Typed C# Objects?

Penyahserialisasian JSON Bersarang dengan Objek C# Ditaip

Menyahserialisasi JSON bersarang menjadi Kamus rata dalam C# menggunakan System.Text.Json boleh menyebabkan kebanyakan sifat menjadi jenis JsonElement. Untuk mencapai jenis C# yang lebih khusus berdasarkan jenis sifat JSON, JsonConverter tersuai diperlukan.

ObjectAsPrimitiveConverter

Kod berikut menyediakan JsonConverter tersuai bernama ObjectAsPrimitiveConverter:

public class ObjectAsPrimitiveConverter : JsonConverter<object>
{
    // ... (converter implementation)
}
Salin selepas log masuk

Penukar Konfigurasi

Untuk mengkonfigurasi penukar, nyatakan FloatFormat yang dikehendaki (berganda atau perpuluhan), UnknownNumberFormat (ralat atau JsonElement) dan ObjectFormat (ExpandoObject atau Dictionary):

var options = new JsonSerializerOptions
{
    Converters = { new ObjectAsPrimitiveConverter(...) },
    WriteIndented = true,
};
Salin selepas log masuk

Deserialisasi kepada Objek

Untuk menyahsiri JSON bersarang kepada objek (atau dinamik jika menggunakan ExpandoObject), gunakan:

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

Penyesuaian

The penukar boleh disesuaikan untuk menyokong jenis angka dan format objek yang berbeza. Selain itu, ia boleh diperluaskan untuk mengendalikan nombor JSON yang tidak disokong dengan lebih anggun.

Kesimpulan

Dengan melaksanakan JsonConverter tersuai, anda boleh mencapai penyahserialisasian khusus jenis objek JSON bersarang ke dalam struktur data hierarki dengan jenis C# yang betul untuk setiap sifat.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Menyahserialisasikan JSON Bersarang ke dalam Objek C# Ditaip?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan