Gestion de JSON avec une structure inconnue : démarshalage et modification
Dans de nombreux scénarios de programmation, traiter des données JSON avec une structure inconnue peut être difficile. Cependant, Go propose une solution pour surmonter cet obstacle.
Considérons une situation dans laquelle vous recevez une chaîne JSON comme celle-ci :
{ "votes": { "option_A": "3" } }
Votre objectif est d'ajouter une nouvelle clé "count" avec une valeur de "1" à l'objet JSON. Cependant, comme la structure JSON est imprévisible, vous ne pouvez pas utiliser la fonction json.Unmarshal standard avec une structure prédéfinie.
Pour relever ce défi, vous pouvez utiliser le type map[string]interface{}. Cela vous permet de transformer le JSON en une carte générique, où les clés sont des chaînes et les valeurs sont des interfaces qui peuvent représenter tout type de données.
Le code montre comment y parvenir :
package main import ( "encoding/json" "fmt" ) func main() { in := []byte(`{ "votes": { "option_A": "3" } }`) var raw map[string]interface{} if err := json.Unmarshal(in, &raw); err != nil { panic(err) } raw["count"] = 1 out, err := json.Marshal(raw) if err != nil { panic(err) } fmt.Println(string(out)) }
Dans ce code, nous désorganisons les données JSON dans la carte brute. La structure étant inconnue, les valeurs sont représentées sous forme d'interfaces.
Nous pouvons ensuite modifier la carte en ajoutant une nouvelle paire clé-valeur avec "count" comme clé et 1 comme valeur. Enfin, nous regroupons la carte modifiée dans une chaîne JSON à l'aide de json.Marshal.
Le résultat sera comme prévu :
{"votes":{"option_A":"3"},"count":1}
Cette technique offre un moyen flexible de gérer les données JSON avec structures inconnues, vous permettant de modifier et d'enrichir les données selon vos besoins.
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!