Pemilihan Medan Dinamik dalam Respons JSON
Dalam Go, pembangun selalunya mengekodkan struct sebagai respons JSON. Untuk membenarkan pelanggan menyesuaikan respons, anda mungkin mahu mengecualikan atau memasukkan medan secara terpilih berdasarkan permintaan mereka.
Penyingkiran atau Penyembunyian Medan Dinamik
Malangnya, Go secara statik- tag struct JSON yang ditakrifkan (cth., json:"date") tidak membenarkan pengalihan keluar atau penyembunyian medan dinamik. Teg json:"-" mengabaikan sepenuhnya medan, yang tidak sesuai untuk menyembunyikan medan secara terpilih.
Penyelesaian dengan Peta
Penyelesaian yang mungkin adalah dengan menggunakan peta [rentetan]antara muka{} bukannya struct. Ini membolehkan anda menghapuskan medan secara dinamik dengan menggunakan fungsi padam:
type SearchResponse map[string]interface{} func (r SearchResponse) RemoveField(field string) { delete(r, field) }
Untuk menjana respons, anda boleh membuat peta, mengisinya dengan data anda dan mengalih keluar medan yang tidak diingini:
m := SearchResponse{ "date": "2023-03-01", "company": "Acme Corp", "industry": "Software", "continent": "North America", } m.RemoveField("industry")
Peta yang terhasil hanya akan mengandungi medan yang diingini untuk respons:
{ "date": "2023-03-01", "company": "Acme Corp", "continent": "North America" }
Pendekatan ini menawarkan pemilihan medan dinamik dan merupakan alternatif yang sesuai untuk mengubah suai struct pada masa jalan.
Pertimbangan Tambahan
Alternatif untuk mengecualikan medan secara selektif adalah dengan mengambil hanya medan yang diminta daripada pangkalan data. Ini mungkin lebih cekap tetapi mungkin tidak boleh dilakukan dalam semua kes.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Pemilihan Medan Dinamik dalam Respons JSON Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!