Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membuat Pengecualian Lemparan Json.NET untuk Medan Hilang Semasa Penyahserikatan?

Bagaimanakah Saya Boleh Membuat Pengecualian Lemparan Json.NET untuk Medan Hilang Semasa Penyahserikatan?

Linda Hamilton
Lepaskan: 2025-01-19 05:59:10
asal
680 orang telah melayarinya

How Can I Make Json.NET Throw Exceptions for Missing Fields During Deserialization?

Mengesan medan yang hilang semasa penyahserikatan JSON menggunakan Json.NET

Dalam penyahserialisasian JSON, pengendalian medan yang hilang adalah penting. Secara lalai, penyeri bersiri Json.NET secara senyap mengembalikan nilai lalai apabila ia menemui medan yang hilang. Tingkah laku ini boleh menyebabkan ralat tidak dapat dikesan apabila menyahsiri objek dengan sifat yang salah.

Soalan:

Anda menghadapi masalah di mana penyeri Json.NET tidak membuang pengecualian apabila menyahsiri objek dengan medan yang hilang. Sebaliknya, ia mengembalikan nilai lalai, yang menjadikannya sukar untuk mengesan data yang salah.

Penyelesaian:

Json.NET menyediakan tetapan MissingMemberHandling boleh dikonfigurasikan. Dengan menetapkannya kepada Error, anda mengarahkan penyiri untuk menaikkan JsonSerializationException apabila medan yang hilang ditemui semasa penyahserikatan. Dengan cara ini anda boleh mengendalikan ralat sedemikian secara eksplisit dalam kod anda.

Kod:

<code class="language-csharp">using Newtonsoft.Json;

try
{
    // 读取JSON字符串
    const string correctData = @"{ 'MyJsonInt': 42 }";
    const string wrongData = @"{ 'SomeOtherProperty': 'fbe8c20b' }";

    // 创建序列化器设置
    JsonSerializerSettings settings = new JsonSerializerSettings();
    settings.MissingMemberHandling = MissingMemberHandling.Error;

    // 反序列化对象
    var goodObj = JsonConvert.DeserializeObject<MyJsonObjView>(correctData, settings);
    Console.WriteLine(goodObj.MyJsonInt.ToString());

    var badObj = JsonConvert.DeserializeObject<MyJsonObjView>(wrongData, settings);
    Console.WriteLine(badObj.MyJsonInt.ToString());
}
catch (Exception ex)
{
    Console.WriteLine(ex.GetType().Name + ": " + ex.Message);
}</code>
Salin selepas log masuk

Output:

<code>42
JsonSerializationException: Could not find member 'SomeOtherProperty' on object
of type 'MyJsonObjView'. Path 'SomeOtherProperty', line 3, position 33.</code>
Salin selepas log masuk

Dengan menetapkan MissingMemberHandling kepada Error kami memastikan bahawa penyeri bersiri akan membuang JsonSerializationException untuk objek yang tiada medan, membolehkan anda mengendalikan ralat dan memastikan integriti data.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuat Pengecualian Lemparan Json.NET untuk Medan Hilang Semasa Penyahserikatan?. 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