Suppression ou masquage de champs dans la réponse JSON avec sélection dynamique
Le problème implique une API qui génère une réponse JSON basée sur une structure. Le défi consiste à sélectionner dynamiquement les champs à renvoyer en fonction d'un paramètre de requête « fields ». Malheureusement, supprimer des champs d'une structure n'est pas réalisable, et les masquer avec la balise json:"omitempty" ne suffira pas lorsque des valeurs vides sont présentes.
Solution alternative : utiliser une carte
Pour résoudre ce problème, envisagez d'utiliser une map[string]interface{} au lieu d'une struct. Cela permet une sélection et une suppression dynamiques de champs :
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)
En utilisant une carte, vous bénéficiez de la flexibilité nécessaire pour inclure ou exclure de manière sélective des champs en fonction des paramètres de requête spécifiés. De plus, vous pouvez facilement manipuler la carte pour répondre à vos exigences de sélection de champs dynamiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!