J'ai créé une API dans Go qui, une fois appelée, exécute une requête, crée une instance d'une structure, puis encode cette structure en JSON avant de la renvoyer à l'appelant. Je voudrais maintenant permettre à l'appelant d'être en mesure de sélectionner les champs spécifiques qu'ils aimeraient retourner en passant un paramètre GET "champs".
Cela signifie qu'en fonction de la ou des valeurs des champs, ma structure changerait. Existe-t-il un moyen de supprimer des champs d'une structure? Ou du moins les cacher dans la réponse JSON de manière dynamique? (Remarque: parfois, j'ai des valeurs vides, donc la balise JSON omitEmpty ne fonctionnera pas ici) Si aucun de ces éléments n'est possible, existe-t-il une suggestion sur une meilleure façon de gérer cela? Merci d'avance.
Une version plus petite des structures 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
J'encode et sort ensuite la réponse comme ceci:
err := json.NewEncoder(c.ResponseWriter).Encode(&msg)