J'ai créé une API en Go qui, lorsqu'elle est appelée, effectue une requête, crée une instance d'une structure, puis encode cette structure en JSON avant de la renvoyer à l'appelant. J'aimerais maintenant permettre à l'appelant de sélectionner les champs spécifiques qu'il souhaite obtenir en passant un paramètre GET "fields".
Cela signifie que, selon la ou les valeurs des champs, ma structure change. Existe-t-il un moyen de supprimer les champs d'une structure ? Ou au moins de les masquer dynamiquement dans la réponse JSON (Remarque : j'ai parfois des valeurs vides, donc la balise JSON omitEmpty ne fonctionnera pas ici). Si aucune de ces possibilités n'est envisageable, avez-vous une suggestion sur une meilleure façon de gérer cela ?
Une version plus petite des structs que j'utilise est ci-dessous :
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
Je code ensuite la réponse et l'envoie comme suit :
err := json.NewEncoder(c.ResponseWriter).Encode(&msg)