Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyahserialisasikan JSON Bersarang kepada Kamus Objek Bersarang dengan Jenis C# yang Betul Menggunakan System.Text.Json?

Bagaimana untuk Menyahserialisasikan JSON Bersarang kepada Kamus Objek Bersarang dengan Jenis C# yang Betul Menggunakan System.Text.Json?

Linda Hamilton
Lepaskan: 2024-12-25 02:40:17
asal
1022 orang telah melayarinya

How to Deserialize Nested JSON to a Nested Dictionary of Objects with Proper C# Types Using System.Text.Json?

Menyahserialisasi JSON Bersarang kepada Kamus Objek Bersarang dengan Jenis C# yang Betul

Dalam C# .Net Core 3.1 menggunakan System.Text.Json, penyahserikan objek JSON bersarang pada Kamus boleh menyebabkan setiap objek menjadi JsonElement. Walau bagaimanapun, kami boleh menyesuaikan proses penyahserikatan untuk mendapatkan jenis C# yang betul untuk setiap jenis sifat JSON:

Custom JsonConverter: ObjectAsPrimitiveConverter

As System.Text.Json kekurangan binaan- sebagai sokongan untuk menyahsiri JSON bentuk bebas kepada jenis primitif, kami memerlukan tersuai JsonConverter, ObjectAsPrimitiveConverter, yang menyediakan fungsi berikut:

  • Tukar String: JSON string properties to C# string
  • Tukar Nombor: sifat nombor JSON kepada C# int/double
  • Tukar Objek: sifat objek JSON kepada Kamus

Pelaksanaan Kod:

public class ObjectAsPrimitiveConverter : JsonConverter<object>
{
    // Configure converter settings (float format, unknown number handling, object format)
    ...

    public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options)
    {
        // Handle custom serialization if needed
    }

    public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        // Handle custom deserialization based on token type
    }
}
Salin selepas log masuk

Tatarajah dan Penggunaan:

Untuk menggunakan penukar tersuai, konfigurasikan JsonSerializerOptions anda dengan ObjectAsPrimitiveConverter dan tentukan tetapan yang diingini:

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

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

Nota:

  • Penukar mengendalikan kes tepi seperti nombor dengan ketepatan sewenang-wenangnya, yang mungkin tidak sesuai dengan jenis C# primitif. Ia menyediakan pilihan untuk pengendalian ralat atau mengembalikan JsonElement untuk nombor tersebut.
  • Anda boleh mengkonfigurasi penukar untuk menggunakan format apungan yang berbeza (berganda/perpuluhan) dan perwakilan objek (Kamus atau ExpandoObject).
  • Rebab demo tersedia untuk rujukan.

Atas ialah kandungan terperinci Bagaimana untuk Menyahserialisasikan JSON Bersarang kepada Kamus Objek Bersarang dengan Jenis C# yang Betul Menggunakan System.Text.Json?. 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