Ho creato un'API in Go che, una volta chiamato, esegue una query, crea un'istanza di una struttura e quindi codifica quella struttura come JSON prima di rispedirla al chiamante. Vorrei ora consentire al chiamante di poter selezionare i campi specifici che vorrebbero restituire passando un parametro GET "field".
Ciò significa che a seconda dei valori dei campi, la mia struttura cambierebbe. C'è un modo per rimuovere i campi da una struttura? O almeno nasconderli nella risposta JSON in modo dinamico? (Nota: a volte ho valori vuoti, quindi il tag omitEmpty JSON non funzionerà qui) Se nessuno di questi è possibile, c'è un suggerimento su un modo migliore per gestirlo? Grazie in anticipo.
Di seguito è riportata una versione più piccola delle strutture che sto usando:
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
Quindi codifico e produco la risposta in questo modo:
err := json.NewEncoder(c.ResponseWriter).Encode(&msg)