Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengesan Sifat Tidak Ditakrifkan Semasa Penyahserialisasian JSON dengan 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!