GoでAPIを作成しました。このAPIは、呼び出されたときにクエリを実行し、構造体のインスタンスを作成してから、その構造体をJSONとしてエンコードしてから、呼び出し元に送り返します。ここで、「fields」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)