Maison > développement back-end > Golang > Comment puis-je rassembler des clés JSON dynamiques dans Go à l'aide de balises de champ ?

Comment puis-je rassembler des clés JSON dynamiques dans Go à l'aide de balises de champ ?

Mary-Kate Olsen
Libérer: 2024-12-11 07:24:09
original
267 Les gens l'ont consulté

How Can I Marshal Dynamic JSON Keys in Go Using Field Tags?

Marshaler les balises de champ JSON dynamiques dans Go : surmonter les défis

Lors du traitement des données JSON dans Go, le marshalling est souvent préféré à la construction manuelle de chaînes JSON. Cela est vrai pour le format Terraform JSON utilisé pour exprimer les configurations d'infrastructure. Cependant, un défi courant se pose lorsque l'on rencontre des clés JSON dynamiques, telles que le nom aléatoire « web1 » dans l'exemple fourni.

La question posée est : comment gérer de telles clés JSON dynamiques à l'aide des balises de champ de Go (par exemple, json : "aws_instance") ?

Limitations du champ Balises

Malheureusement, les balises de champ de Go ne prennent pas directement en charge les clés dynamiques. La solution fournie tente d'utiliser des balises de champ pour représenter les clés statiques (« ressource » et « aws_instance »), mais ne parvient pas à traiter la clé dynamique « web1 ».

Approches alternatives

En tant que alternative, la réponse propose d'utiliser une carte pour représenter les clés dynamiques, permettant d'attribuer des valeurs au moment de l'exécution.

type Resource struct {
    AWSInstance map[string]AWSInstance `json:"aws_instance"`
}

type AWSInstance struct {
    AMI string `json:"ami"`
    Count int `json:"count"`
    SourceDestCheck bool `json:"source_dest_check"`
}
Copier après la connexion

Dans cet exemple, AWSInstance devient une carte saisie par des noms dynamiques (par exemple, "web1"). La carte peut ensuite être remplie avec des valeurs spécifiques selon les besoins.

r := Resource{
    AWSInstance: map[string]AWSInstance{
        "web1": AWSInstance{
            AMI:   "qdx",
            Count: 2,
        },
    },
}
Copier après la connexion

En utilisant une carte, les clés JSON dynamiques peuvent être facilement gérées dans Go, permettant d'utiliser efficacement le marshalling dans des scénarios où les balises de champ sont insuffisantes.

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