Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengendalikan Medan JSON yang Tidak Konsisten (Strings vs. Array) dalam Go?
Menyahmarshalling JSON dengan Medan Tidak Konsisten: Mengendalikan Rentetan dan Tatasusunan
Apabila menyahmarshall data JSON ke dalam struct Go, ia boleh menjadi mencabar untuk mengendalikan medan yang boleh berbeza dalam jenis. Sebagai contoh, medan mungkin rentetan dalam kebanyakan kes tetapi tatasusunan rentetan sekali-sekala. Untuk menangani isu ini, kami membentangkan penyelesaian yang memanfaatkan keupayaan penghuraian JSON Go yang berkuasa.
Menangkap Medan Bervariasi dengan json.RawMessage
Kunci untuk mengendalikan medan JSON yang tidak konsisten terletak pada menangkap data mentah menggunakan json.RawMessage. Jenis ini ialah kepingan bait yang menyimpan nilai JSON yang tidak dihuraikan. Dengan menyimpan data mentah, kami mempunyai fleksibiliti untuk menghuraikannya kemudian bergantung pada jenis khususnya.
Menyembunyikan Medan Nama Paparan dan Mengisinya Selepas Penyahkodan
Untuk mengelakkan penyahkod daripada cuba mentafsir medan DisplayName sebelum kami mempunyai data yang berkaitan, kami menyembunyikannya menggunakan nama "-" JSON. Nama ini mengarahkan penyahkod untuk mengabaikan medan semasa unmarshalling awal. Selepas JSON peringkat atas telah dinyahkod, kami mengisi medan DisplayName secara manual berdasarkan data mentah yang dihuraikan.
Mengendalikan Pelbagai Jenis Data Mentah
Bergantung pada sama ada data mentah ialah rentetan atau tatasusunan rentetan, kami meneruskan seperti berikut:
Menyepadukan ke dalam Gelung untuk MyListings
Untuk mengendalikan senarai item, seperti MyListings, kami boleh mengulangi setiap item dan melakukan logik unmarshalling yang sama seperti yang diterangkan di atas. Ini membolehkan kami mengendalikan sebarang ketidakkonsistenan dalam medan DisplayName untuk setiap item.
Mengenkapsulasi Logik dengan Custom Unmarshaler
Jika berbilang medan dalam model data boleh mempunyai ketidakkonsistenan jenis, ia boleh memberi manfaat untuk merangkum logik dalam jenis tersuai yang melaksanakan antara muka json.Unmarshaler. Ini memudahkan proses dan mengurangkan pertindihan.
Kesimpulannya, dengan menggunakan json.RawMessage dan menyembunyikan medan yang berbeza-beza, kami boleh menyahmarshal data JSON dengan medan yang tidak konsisten dengan berkesan, memastikan semua data yang diperlukan ditangkap dan dihuraikan dengan betul. Contoh yang disediakan dan pautan taman permainan menunjukkan penyelesaian dalam amalan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Medan JSON yang Tidak Konsisten (Strings vs. Array) dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!