Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menyahmarshal Nilai Boolean Fleksibel (0/1 dan benar/salah) daripada JSON dalam Go?

Bagaimanakah Saya Boleh Menyahmarshal Nilai Boolean Fleksibel (0/1 dan benar/salah) daripada JSON dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-04 17:42:12634semak imbas

How Can I Unmarshal Flexible Boolean Values (0/1 and true/false) from JSON in Go?

JSON Unmarshalling of Flexible Boolean Values

Apabila berurusan dengan sumber data JSON yang secara tidak konsisten mewakili nilai boolean sebagai 0/1 dan false/true , pakej pengekodan/json standard mungkin tidak memberikan fleksibiliti yang mencukupi untuk menghurai. Untuk menangani isu ini, kami boleh melaksanakan kaedah UnmarshalJSON tersuai untuk mengembangkan format boolean yang diterima.

Dalam contoh yang diberikan, kami mentakrifkan struct bernama MyType dengan dua medan boolean: AsBoolean dan AlsoBoolean. Input JSON yang sepadan mengandungi nilai "true" dan "1" untuk medan masing-masing.

Untuk menyahmarshal kedua-dua 0 dan false sebagai boolean, kami mencipta jenis ConvertibleBoolean baharu dan melaksanakan kaedah UnmarshalJSONnya. Dalam kaedah ini, kami memeriksa data input sebagai rentetan dan menentukan nilai boolean yang sepadan berdasarkan syarat berikut:

  • Jika rentetan ialah "1" atau "benar," kami menetapkan nilai boolean kepada benar.
  • Jika rentetan ialah "0" atau "false," kami menetapkan nilai boolean kepada false.
  • Sebarang input lain menghasilkan ralat dengan mesej deskriptif.

Dengan menyesuaikan kaedah UnmarshalJSON, kami boleh melanjutkan tingkah laku unmarshaling JSON lalai dan menampung perwakilan boolean bukan standard dalam data JSON input. Pendekatan ini membolehkan kami menyahmarshal input JSON ke dalam nilai boolean yang dijangkakan dan mengisi struct MyType dengan sewajarnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahmarshal Nilai Boolean Fleksibel (0/1 dan benar/salah) daripada JSON dalam Go?. 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