Criei uma API no Go que, ao ser chamada, executa uma consulta, cria uma instância de uma estrutura e, em seguida, codifica essa estrutura como JSON antes de enviar de volta ao chamador. Agora, eu gostaria de permitir que o chamador pudesse selecionar os campos específicos que eles gostariam de retornar, passando um parâmetro GET "fields".
Isso significa que, dependendo do (s) valor (es) dos campos, minha estrutura mudaria. Existe alguma maneira de remover campos de uma estrutura? Ou pelo menos oculte-os na resposta JSON dinamicamente? (Nota: Às vezes, tenho valores vazios para que a tag JSON omitEmpty não funcione aqui) Se nenhuma dessas opções for possível, há uma sugestão sobre uma maneira melhor de lidar com isso? Desde já, obrigado.
Uma versão menor das estruturas que estou usando está abaixo:
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
Em seguida, codifico e produzo a resposta da seguinte maneira:
err := json.NewEncoder(c.ResponseWriter).Encode(&msg)