Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengesan Sifat Tidak Ditakrifkan Semasa Penyahserialisasian JSON dengan Json.NET?

Bagaimanakah Saya Boleh Mengesan Sifat Tidak Ditakrifkan Semasa Penyahserialisasian JSON dengan Json.NET?

DDD
Lepaskan: 2025-01-19 02:51:08
asal
739 orang telah melayarinya

How Can I Detect Undefined Properties During JSON Deserialization with Json.NET?

Menggunakan Json.NET untuk mengesan sifat yang tidak ditentukan selepas penyahserikatan

Dalam aplikasi berasaskan JSON, adalah penting untuk mengendalikan ralat penyahserikatan dengan cekap. Walaupun tingkah laku lalai Json.NET adalah untuk kembali ke nilai lalai secara senyap, terdapat situasi di mana pengecualian perlu dibuang.

Untuk memenuhi keperluan ini, Json.NET menyediakan tetapan MissingMemberHandling. Dengan menetapkan sifat ini kepada Error, sebarang percubaan untuk menyahsiri sifat JSON tanpa sifat model yang sepadan akan mencetuskan JsonSerializationException.

Pertimbangkan kod berikut:

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

namespace JsonFailTest
{
    [JsonObject(MemberSerialization.OptOut)]
    public class MyJsonObjView
    {
        [JsonProperty("MyJsonInt")]
        public int MyJsonInt { get; set; }
    }

    public static class Program
    {
        public static void Main(string[] args)
        {
            string correctData = @"{'MyJsonInt': 42}";
            string wrongData = @"{'SomeOtherProperty': 'fbe8c20b'}";

            var goodObj = JsonConvert.DeserializeObject<MyJsonObjView>(correctData);
            Console.WriteLine(goodObj.MyJsonInt);

            try
            {
                JsonSerializerSettings settings = new JsonSerializerSettings
                {
                    MissingMemberHandling = MissingMemberHandling.Error
                };

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

Dengan kod yang diubah suai ini, penyahserialisasian objek wrongData kini akan mengakibatkan ralat berikut:

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

Mesej ralat ini dengan jelas mengenal pasti sifat yang menyebabkan penyahserikatan gagal, menjadikan penyahpepijatan lebih cekap. Dengan menggunakan tetapan MissingMemberHandling, anda boleh memaksa pengesahan atribut yang ketat semasa penyahserikatan untuk memastikan integriti data.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Sifat Tidak Ditakrifkan Semasa Penyahserialisasian JSON dengan Json.NET?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan