Я создал API в Go, который после вызова выполняет запрос, создает экземпляр структуры и затем кодирует эту структуру как JSON перед отправкой обратно вызывающему. Теперь я хочу, чтобы вызывающий мог выбрать конкретные поля, которые они хотели бы вернуть, передав параметр "поля" GET.
Это означает, что в зависимости от значений полей (s) моя структура изменится. Есть ли способ удалить поля из структуры? Или, по крайней мере, скрывать их в ответ JSON динамически? (Примечание. Иногда у меня есть пустые значения, поэтому тег JSON omitEmpty не будет работать здесь). Если ни одно из них не является возможным, есть ли предложение о лучшем способе справиться с этим? Спасибо заранее.
Меньшая версия структур, которые я использую, ниже:
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
Затем я кодирую и выдаю ответ так:
err := json.NewEncoder(c.ResponseWriter).Encode(&msg)