Maison > développement back-end > Golang > Comment analyser un fichier YAML avec des paires clé-valeur imbriquées dans Go ?

Comment analyser un fichier YAML avec des paires clé-valeur imbriquées dans Go ?

DDD
Libérer: 2024-11-10 22:05:02
original
392 Les gens l'ont consulté

How to Parse a YAML File with Nested Key-Value Pairs in Go?

Analyse d'un fichier YAML dans Go

L'analyse des fichiers YAML dans Go implique l'utilisation de la bibliothèque YAML disponible via gopkg.in/yaml.v2. Le code fourni est conçu pour analyser un fichier YAML avec des paires clé-valeur imbriquées, comme suit :

firewall_network_rules:
  rule1:
    src:       blablabla-host
    dst:       blabla-hostname
Copier après la connexion

Cependant, des problèmes surviennent lorsque vous tentez d'analyser des paires clé-valeur sans valeurs associées. La structure implémentée ne définit pas ces valeurs, ce qui entraîne une erreur lors de l'analyse.

Pour résoudre ce problème, envisagez d'incorporer un exemple YAML réel, tel qu'un service.yaml de Google Cloud ou Kubernetes :

apiVersion: v1
kind: Service
metadata:
  name: myName
  namespace: default
  labels:
    router.deis.io/routable: "true"
  annotations:
    router.deis.io/domains: ""
spec:
  type: NodePort
  selector:
    app: myName
  ports:
    - name: http
      port: 80
      targetPort: 80
    - name: https
      port: 443
      targetPort: 443
Copier après la connexion

Cet exemple illustre les relations clé-valeur imbriquées et fournit un cas d’utilisation pratique. La structure Go correspondante ressemblerait à :

type Service struct {
    APIVersion string `yaml:"apiVersion"`
    Kind       string `yaml:"kind"`
    Metadata   struct {
        Name      string `yaml:"name"`
        Namespace string `yaml:"namespace"`
        Labels    struct {
            RouterDeisIoRoutable string `yaml:"router.deis.io/routable"`
        } `yaml:"labels"`
        Annotations struct {
            RouterDeisIoDomains string `yaml:"router.deis.io/domains"`
        } `yaml:"annotations"`
    }
    Spec struct {
        Type     string `yaml:"type"`
        Selector struct {
            App string `yaml:"app"`
        }
        Ports []struct {
            Name       string `yaml:"name"`
            Port       int    `yaml:"port"`
            TargetPort int    `yaml:"targetPort"`
            NodePort   int    `yaml:"nodePort,omitempty"`
        } `yaml:"ports"`
    }
}
Copier après la connexion

Pour simplifier le processus, des services comme yaml-to-go et json-to-go fournissent des outils pratiques pour convertir YAML en structures Go, rendant la tâche d'analyse plus gérable. .

Enfin, pour désorganiser le fichier YAML dans votre structure, vous pouvez utiliser le code suivant :

var service Service

err := yaml.Unmarshal(yourFile, &service)
if err != nil {
    panic(err)
}
Copier après la connexion

Cette approche permet d'accéder aux données analysées via la structure de service, vous permettant de interagissez avec les informations du fichier YAML dans votre application Go.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal