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
Susan Sarandonasal
2024-12-25 12:11:09434semak imbas

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)
}

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,
};

Deserialisasi kepada Objek

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

dynamic d = JsonSerializer.Deserialize<dynamic>(json, options);

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:
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