Maison >développement back-end >Golang >Comment puis-je rassembler les balises de champ JSON dynamiques dans Go ?

Comment puis-je rassembler les balises de champ JSON dynamiques dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-11 18:14:17287parcourir

How Can I Marshal Dynamic JSON Field Tags in Go?

Marshaling des balises de champ JSON dynamiques dans Go

Lors de la génération de JSON pour un fichier Terraform à l'aide du format JSON, vous pouvez rencontrer le défi d'utiliser clés JSON dynamiques pour les ressources avec des noms aléatoires ou variables. Cela est dû au fait que les balises de champ de Terraform pour le marshalling JSON nécessitent des identifiants statiques.

Traditionnellement, on peut envisager d'utiliser du code personnalisé pour lancer son propre JSON, cependant, il est préférable d'utiliser les capacités de marshalling existantes. La question se pose : comment créer des clés JSON dynamiques avec les balises de champ de Go ?

Solution

Malheureusement, utiliser des balises de champ pour générer des clés JSON dynamiques n'est pas possible dans Go . Cependant, une solution alternative existe : utiliser une carte.

Utiliser une carte

Les cartes dans Go permettent des clés dynamiques, ce qui les rend idéales pour cette situation. Voici un exemple :

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

type AWSInstance struct {
    // Your instance properties here
}

Dans cet exemple, le champ AWSInstance dans la structure Resource est une carte utilisant des clés de chaîne dynamiques pour stocker des valeurs AWSInstance individuelles.

Exemple d'utilisation

r := Resource{
    AWSInstance: map[string]AWSInstance{
        "web1": AWSInstance{
            // Initialize your instance properties
        },
        // ... add other instances with dynamic keys
    },
}

Aire de jeux Exemple

Vous pouvez explorer un exemple interactif sur le Go Playground : https://go.dev/play/p/e9d2O-cLsjX

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!

Déclaration:
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