Я создал API в Go, который после вызова выполняет запрос, создает экземпляр структуры и затем кодирует эту структуру как JSON перед отправкой обратно вызывающей стороне. Теперь я бы хотел, чтобы вызывающая сторона могла выбрать конкретные поля, которые они хотели бы вернуть, передав параметр GET «fields».
Это означает, что в зависимости от значений полей моя структура изменится. Есть ли способ удалить поля из структуры? Или, по крайней мере, динамически скрывать их в ответе 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)