Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah JsonConverter Tersuai Boleh Mengendalikan Nilai Enum yang Tidak Dijangka dalam Penyahserialisasian JSON?

Bagaimanakah JsonConverter Tersuai Boleh Mengendalikan Nilai Enum yang Tidak Dijangka dalam Penyahserialisasian JSON?

DDD
DDDasal
2025-01-03 10:39:44346semak imbas

How Can a Custom JsonConverter Handle Unexpected Enum Values in JSON Deserialization?

Mengatasi Nilai Enum JSON yang Tidak Dijangka dengan Pengendalian Tersuai

Apabila menemui data JSON yang mengandungi nilai enum yang melebihi takrifan enum semasa anda, adalah mungkin untuk mengalami pengecualian semasa penyahserikatan menggunakan Json.net. Untuk menyelesaikan isu ini, mencipta JsonConverter tersuai ialah penyelesaian yang berkesan.

TolerantEnumConverter: Pendekatan Penyahserikatan Fleksibel

TolerantEnumConverter ialah JsonConverter tersuai yang memberikan fleksibiliti dalam mengendalikan unrecognized nilai enum. Ia mengikuti pepohon membuat keputusan untuk menentukan respons yang sesuai:

  • Jika nilai enum yang sepadan (mengikut rentetan atau integer) wujud dalam JSON, ia digunakan.
  • Untuk nullable enums, nilai nol dikembalikan jika tiada padanan ditemui.
  • Jika enum mengandungi nilai "Tidak diketahui", ia digunakan sebagai catch-all untuk nilai yang tidak diiktiraf.
  • Jika tiada satu pun di atas digunakan, nilai pertama enum digunakan.

Faedah dan Pelaksanaan

Menggunakan TolerantEnumConverter menawarkan beberapa kelebihan:

  • Penyahserialisasian lancar untuk enum JSON, tanpa mengira nilai yang tidak diiktiraf.
  • Pengendalian boleh disesuaikan berdasarkan keperluan khusus anda.
  • Keserasian dengan kedua-dua yang boleh dibatalkan dan tidak boleh dibatalkan enums.

Untuk melaksanakan TolerantEnumConverter, cuma tambahkannya sebagai atribut [JsonConverter] pada jenis enum anda. Kod yang diberikan dalam jawapan boleh digunakan sebagai titik permulaan dan disesuaikan untuk memenuhi keperluan projek anda.

Demonstrasi dan Kesan

Demo yang disediakan mempamerkan cara TolerantEnumConverter mengendalikan pelbagai nilai enum JSON, termasuk nilai sah, tidak sah dan nol. Hasilnya dipaparkan untuk kedua-dua enum yang boleh dibatalkan dan tidak boleh dibatalkan, menunjukkan keupayaan penukar untuk menghalang pengecualian sambil memberikan hasil penyahserikatan yang fleksibel.

Atas ialah kandungan terperinci Bagaimanakah JsonConverter Tersuai Boleh Mengendalikan Nilai Enum yang Tidak Dijangka dalam Penyahserialisasian JSON?. 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