透過動態選擇刪除或隱藏 JSON 回應中的欄位
問題涉及產生基於結構體的 JSON 回應的 API。挑戰是根據“字段”查詢參數動態選擇要返回的字段。不幸的是,從結構中刪除欄位是不可行的,當存在空值時,使用 json:"omitempty" 標籤隱藏它們是不夠的。
替代解決方案:使用地圖
要解決這個問題,請考慮使用 map[string]interface{} 而不是結構體。這允許動態欄位選擇和刪除:
type SearchResultsMap map[string]interface{} // Populate the map with data searchResultsMap := make(SearchResultsMap) searchResultsMap["Date"] = "2023-03-08" searchResultsMap["Company"] = "Acme Corp" searchResultsMap["Country"] = "USA" // Remove unwanted fields delete(searchResultsMap, "IdCompany") delete(searchResultsMap, "Industry") // Encode and output the response err := json.NewEncoder(c.ResponseWriter).Encode(&searchResultsMap)
透過使用映射,您可以靈活地根據指定的查詢參數選擇性地包含或排除欄位。此外,您還可以輕鬆操作地圖來滿足您的動態欄位選擇要求。
以上是如何在 Go 中動態選擇和刪除 JSON 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!