Go'da çağrıldığında bir sorgu gerçekleştiren, bir yapının örneğini oluşturan ve daha sonra arayana geri göndermeden önce bu yapıyı JSON olarak kodlayan bir API oluşturdum. Şimdi arayanın "alanlar" GET parametresinden geçirerek geri dönmek istedikleri belirli alanları seçebilmesine izin vermek istiyorum.
Bu, alan değerlerine bağlı olarak yapımın değişeceği anlamına gelir. Bir yapıdan alanları kaldırmanın herhangi bir yolu var mı? Ya da en azından bunları JSON yanıtında dinamik olarak gizlemek mi? (Not: Bazen JSON omitEmpty etiketi burada işe yaramayacak şekilde boş değerlerim var) Bunlardan hiçbiri mümkün değilse, bu daha iyi bir yol için bir öneri var mı? Şimdiden teşekkürler.
Kullandığım yapıların daha küçük bir sürümü aşağıdadır:
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
Sonra kodlamak ve böylece yanıt çıktı:
err := json.NewEncoder(c.ResponseWriter).Encode(&msg)