Tôi đã tạo một API trong Go, khi được gọi, thực hiện một truy vấn, tạo một thể hiện của một cấu trúc và sau đó mã hóa cấu trúc đó dưới dạng JSON trước khi gửi lại cho người gọi. Bây giờ tôi muốn cho phép người gọi có thể chọn các trường cụ thể mà họ muốn trả về bằng cách chuyển vào tham số GET "trường".
Điều này có nghĩa là tùy thuộc vào (các) giá trị trường, cấu trúc của tôi sẽ thay đổi. Có cách nào để loại bỏ các trường từ một cấu trúc? Hoặc ít nhất là ẩn chúng trong phản hồi JSON một cách linh hoạt? (Lưu ý: Đôi khi tôi có các giá trị trống nên thẻ omitEmpty JSON sẽ không hoạt động ở đây) Nếu cả hai điều này đều không thể, có gợi ý nào về cách tốt hơn để xử lý việc này không? Cảm ơn trước.
Một phiên bản nhỏ hơn của các cấu trúc tôi đang sử dụng ở bên dưới:
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
Sau đó tôi mã hóa và xuất ra phản hồi như vậy:
err := json.NewEncoder(c.ResponseWriter).Encode(&msg)