Я створив API в Go, який після виклику виконує запит, створює екземпляр структури, а потім кодує цю структуру як JSON перед тим, як відправити назад до абонента. Тепер я хотів би дозволити абоненту можливість вибирати конкретні поля, які вони хотіли б повернути, перейшовши в параметр GET "поля".
Це означає, що залежно від значень полів міняє структуру. Чи є спосіб видалити поля з структури? Або принаймні динамічно приховувати їх у відповіді 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)