Désorganisation des clés dynamiques dans des champs Struct dans Go
Lorsque vous travaillez avec des données JSON qui n'adhèrent pas à une structure prédéterminée, la désorganisation devient plus stimulant. Dans ce cas, vous disposez d'un fichier de configuration JSON avec des clés dynamiques dans un objet nommé « choses ».
Pour résoudre ce problème, une solution consiste à utiliser une carte dans votre structure pour capturer les clés dynamiques. Voici un exemple :
type X struct { Things map[string]Thing } type Thing struct { Key1 string Key2 string }
Au lieu de définir un champ de structure spécifique pour chaque clé, le champ « Objets » est une carte qui stocke les paires clé-valeur, où la clé est la clé dynamique.
Pour désorganiser les données JSON en utilisant cette approche, vous feriez quelque chose comme :
var x X if err := json.Unmarshal(data, &x); err != nil { // handle error }
Cela désorganisera le JSON dans le Structure "X", avec les clés dynamiques mappées aux instances de structure appropriées dans la carte "Objets".
Cependant, si vous souhaitez toujours que la valeur de la clé soit un champ dans la structure plutôt qu'une partie de la structure map key, vous pouvez utiliser cette approche :
type Thing struct { Name string `json:"-"` // <-- add this field Key1 string Key2 string } ... // Update the name field after unmarshalling for k, t := range x.Things { t.Name = k x.Things[k] = t }
Cela implique d'ajouter une balise "-`json" au champ "Nom" pour l'ignorer lors du démarchage. Après le désorganisation, une boucle est utilisée pour attribuer les clés dynamiques au champ "Nom" de chaque instance de structure dans la carte.
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!