Ich habe in Go eine API erstellt, die beim Aufruf eine Abfrage ausführt, eine Instanz einer Struktur erstellt und diese Struktur dann als JSON codiert, bevor sie an den Aufrufer zurückgesendet wird. Ich möchte dem Aufrufer jetzt ermöglichen, die spezifischen Felder auszuwählen, die er zurückgeben möchte, indem er einen GET-Parameter "Felder" übergibt.
Dies bedeutet, dass sich meine Struktur abhängig von den Feldwerten ändern würde. Gibt es eine Möglichkeit, Felder aus einer Struktur zu entfernen? Oder sie zumindest dynamisch in der JSON-Antwort ausblenden? (Hinweis: Manchmal habe ich leere Werte, sodass das JSON-Tag omitEmpty hier nicht funktioniert.) Wenn beides nicht möglich ist, gibt es einen Vorschlag für eine bessere Vorgehensweise? Danke im Voraus.
Eine kleinere Version der von mir verwendeten Strukturen ist unten aufgeführt:
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
Ich codiere dann die Antwort und gebe sie wie folgt aus:
err := json.NewEncoder(c.ResponseWriter).Encode(&msg)