Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengendalikan Nilai Enum Tidak Diketahui Semasa Penyahserialisasian JSON dengan Json.net?
Mengabaikan Nilai Enum Tidak Diketahui Semasa Penyahserikatan JSON
Masalah:
Penyahserikatan JSON dengan Json. net boleh membuang pengecualian apabila menemui nilai enum yang tidak diketahui dalam data JSON. Ini berlaku apabila enum dibuat berdasarkan dokumentasi semasa, tetapi API pihak ketiga kemudian menambah nilai enum baharu.
Penyelesaian: Custom JsonConverter
Untuk menyelesaikan isu ini , JsonConverter tersuai boleh digunakan. Begini cara ia berfungsi:
Pelaksanaan Kod:
class TolerantEnumConverter : JsonConverter { ... (Implementation from the provided answer) }
Penggunaan:
Gunakan atribut [JsonConverter(typeof(TolerantEnumConverter))] kepada jenis enum untuk menggunakan adat penukar semasa penyahserikatan:
[JsonConverter(typeof(TolerantEnumConverter))] enum Status { ... (Enum values) }
Contoh Demonstrasi:
Coretan kod berikut menunjukkan penggunaan TolerantEnumConverter dengan nilai enum dan JSON yang berbeza input:
string json = @" { ... (JSON data with valid and invalid enum values) }"; Foo foo = JsonConvert.DeserializeObject<Foo>(json); foreach (PropertyInfo prop in typeof(Foo).GetProperties()) { object val = prop.GetValue(foo, null); Console.WriteLine(prop.Name + ": " + (val == null ? "(null)" : val.ToString())); }
Output:
Output konsol menunjukkan cara TolerantEnumConverter mengendalikan nilai enum yang tidak diketahui, termasuk menetapkan nilai kepada "(null)", "Unknown" , atau menggunakan nilai pertama enum.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai Enum Tidak Diketahui Semasa Penyahserialisasian JSON dengan Json.net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!