Maison > Article > développement back-end > Comment désassembler les clés JSON dynamiques avec les structures Viper et Go ?
Désagrégation des clés JSON dynamiques avec les structures Viper et Go
Dans Go, la gestion des données JSON avec des clés dynamiques peut être difficile. Par exemple, si vous disposez d'un fichier de configuration JSON avec un objet contenant des clés dont le nom varie, comment désassembler ces données dans une structure Go ?
Prenons le fichier de configuration JSON suivant comme exemple :
{ "things" :{ "123abc" :{ "key1": "anything", "key2" : "more" }, "456xyz" :{ "key1": "anything2", "key2" : "more2" }, "blah" :{ "key1": "anything3", "key2" : "more3" } } }
Pour résoudre ce problème, vous pouvez utiliser une carte pour représenter les clés dynamiques, comme indiqué dans cette structure Go mise à jour :
type X struct { Things map[string]Thing } type Thing struct { Key1 string Key2 string }
Une fois que vous avez défini la structure, vous pouvez annuler le marshalage de la structure. Données JSON comme ceci :
var x X if err := json.Unmarshal(data, &x); err != nil { // handle error }
Si le nom des clés d'objet doit être un champ de la structure "Thing", vous pouvez ajouter une boucle pour l'attribuer après le démarshaling :
// Fix the name field after unmarshal for k, t := range x.Things { t.Name = k x.Things[k] = t }
Alternativement, un décodeur JSON personnalisé peut être utilisé pour gérer les clés dynamiques en remplaçant la méthode « Decode ». Reportez-vous à la documentation officielle de Go pour plus de détails sur cette approche.
Grâce à ces techniques, vous pouvez efficacement transformer les clés JSON dynamiques en structures Go, vous permettant ainsi de travailler avec des fichiers de configuration et des structures de données complexes.
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!