通过动态选择删除或隐藏 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中文网其他相关文章!