Maison > Article > développement back-end > Comment regrouper les clés JSON dynamiques dans des champs Struct dans Go ?
Désorganisation des clés JSON dynamiques dans des champs de structure dans Go
Les clés JSON dynamiques peuvent poser un défi lors de la désorganisation en structures avec des noms de champs statiques. Considérez le fichier de configuration JSON suivant :
{ "things" :{ "123abc" :{ "key1": "anything", "key2" : "more" }, "456xyz" :{ "key1": "anything2", "key2" : "more2" }, "blah" :{ "key1": "anything3", "key2" : "more3" } } }
Pour représenter ce JSON dans une structure Go, vous pouvez utiliser une carte au lieu de noms de champs statiques :
type X struct { Things map[string]Thing } type Thing struct { Key1 string Key2 string }
Ensuite, désorganisez le JSON en utilisant la fonction json.Unmarshal :
var x X if err := json.Unmarshal(data, &x); err != nil { // handle error }
Avec cette approche, les clés dynamiques deviennent les clés de la carte, vous permettant d'accéder les valeurs selon vos besoins.
Cependant, si la clé doit être membre de la structure Thing, vous pouvez écrire une boucle pour ajouter la clé après le démarshalling :
type Thing struct { Name string `json:"-"` // add the field Key1 string Key2 string } ... // Fix the name field after unmarshal for k, t := range x.Things { t.Name = k x.Things[k] = t }
Cette méthode vous permet avoir à la fois la clé comme champ et les valeurs 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!