Maison >développement back-end >Golang >Comment sélectionner et supprimer dynamiquement des champs JSON dans Go ?

Comment sélectionner et supprimer dynamiquement des champs JSON dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 02:38:08675parcourir

How to Dynamically Select and Remove JSON Fields in Go?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn