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
DDDasal
2025-01-19 02:51:08706semak imbas

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>

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>

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!

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