Maison > développement back-end > Golang > le corps du texte

Comment désassembler les clés JSON dynamiques avec les structures Viper et Go ?

Mary-Kate Olsen
Libérer: 2024-11-20 11:33:02
original
469 Les gens l'ont consulté

How do you unmarshal dynamic JSON keys with Viper and Go structs?

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"
    }
  }
}
Copier après la connexion

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
}
Copier après la connexion

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
}
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal