Saya telah membuat API in Go yang, saat dipanggil, melakukan kueri, membuat instance dari sebuah struct, dan kemudian menyandikan struct itu sebagai JSON sebelum mengirim kembali ke pemanggil. Sekarang saya ingin mengizinkan pemanggil untuk dapat memilih bidang spesifik yang ingin mereka kembalikan dengan mengirimkan parameter GET "bidang".
Ini berarti tergantung pada nilai bidang, struct saya akan berubah. Apakah ada cara untuk menghapus bidang dari struct? Atau setidaknya menyembunyikannya di respons JSON secara dinamis? (Catatan: Kadang-kadang saya memiliki nilai kosong sehingga tag omitEmpty JSON tidak akan berfungsi di sini) Jika tidak ada yang mungkin, apakah ada saran tentang cara yang lebih baik untuk menangani ini? Terima kasih sebelumnya.
Versi lebih kecil dari struct yang saya gunakan ada di bawah:
type SearchResult struct {
Date string `json:"date"`
IdCompany int `json:"idCompany"`
Company string `json:"company"`
IdIndustry interface{} `json:"idIndustry"`
Industry string `json:"industry"`
IdContinent interface{} `json:"idContinent"`
Continent string `json:"continent"`
IdCountry interface{} `json:"idCountry"`
Country string `json:"country"`
IdState interface{} `json:"idState"`
State string `json:"state"`
IdCity interface{} `json:"idCity"`
City string `json:"city"`
} //SearchResult
type SearchResults struct {
NumberResults int `json:"numberResults"`
Results []SearchResult `json:"results"`
} //type SearchResults
Saya kemudian menyandikan dan menampilkan respons seperti ini:
err := json.NewEncoder(c.ResponseWriter).Encode(&msg)