Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Melaksanakan Pemilihan Medan Dinamik dalam Respons Go JSON?
Pemilihan Medan Dinamik dalam Respons JSON
Dalam Go, adalah mungkin untuk mencipta API yang mengembalikan data JSON daripada struct. Keperluan biasa ialah membenarkan pemanggil memilih medan tertentu yang mereka mahu dikembalikan. Walau bagaimanapun, teg struktur JSON yang ditakrifkan secara statik tidak menyokong pemilihan medan dinamik.
Menyembunyikan Medan dengan JSON
Satu penyelesaian yang mungkin adalah menggunakan teg json:"-" untuk melangkau medan tertentu semasa pengekodan. Walau bagaimanapun, ini hanya berfungsi untuk medan yang ditakrifkan secara statik yang sentiasa dikecualikan. Ia tidak menangani keperluan untuk pemilihan medan dinamik.
Penyingkiran Medan Dinamik
Pendekatan yang lebih fleksibel melibatkan penggunaan peta[rentetan]antara muka{} dan bukannya struct . Ini membolehkan anda mengalih keluar medan secara dinamik menggunakan fungsi padam pada peta. Pendekatan ini amat berguna apabila anda tidak boleh membuat pertanyaan hanya untuk medan yang diminta pada mulanya.
Contoh:
import ( "encoding/json" "fmt" "net/http" ) type SearchResult struct { Date string IdCompany int Company string IdIndustry interface{} Industry string ... // other fields } type SearchResults struct { NumberResults int `json:"numberResults"` Results []SearchResult `json:"results"` } func main() { http.HandleFunc("/search", func(w http.ResponseWriter, r *http.Request) { // Get requested fields from query parameter fields := r.URL.Query()["fields"] results := SearchResults{ // Populate results... } // Remove unwanted fields from each result for i := range results.Results { for _, field := range fields { delete(results.Results[i], field) } } // Encode and output response err := json.NewEncoder(w).Encode(&results) if err != nil { http.Error(w, "Error encoding response", http.StatusInternalServerError) } }) }
Dalam contoh ini, parameter medan ialah digunakan untuk mengalih keluar medan secara dinamik daripada struct SearchResult sebelum mengekodkannya sebagai JSON. Pendekatan ini membolehkan pemilihan medan yang fleksibel berdasarkan pilihan pemanggil.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pemilihan Medan Dinamik dalam Respons Go JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!