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

Comment désorganiser JSON avec des clés dynamiques dans des champs Struct dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-16 00:07:03
original
518 Les gens l'ont consulté

How to Unmarshal JSON with Dynamic Keys into Struct Fields in Go?

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

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

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

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!

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