Parsen einer YAML-Datei in Go
Das Parsen von YAML-Dateien in Go erfordert die Verwendung der YAML-Bibliothek, die über gopkg.in/yaml.v2 verfügbar ist. Der bereitgestellte Code dient zum Parsen einer YAML-Datei mit verschachtelten Schlüssel-Wert-Paaren wie dem folgenden:
firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostname
Beim Versuch, Schlüssel-Wert-Paare ohne begleitende Werte zu analysieren, treten jedoch Probleme auf. Die implementierte Struktur definiert diese Werte nicht, was zu einem Fehler beim Parsen führt.
Um dieses Problem zu beheben, sollten Sie erwägen, ein reales YAML-Beispiel einzubinden, beispielsweise eine service.yaml von Google Cloud oder 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
Dieses Beispiel demonstriert verschachtelte Schlüssel-Wert-Beziehungen und bietet einen praktischen Anwendungsfall. Die entsprechende Go-Struktur würde wie folgt aussehen:
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"` } }
Um den Prozess zu vereinfachen, bieten Dienste wie yaml-to-go und json-to-go praktische Tools zum Konvertieren von YAML in Go-Strukturen, wodurch die Parsing-Aufgabe einfacher zu handhaben ist .
Um die YAML-Datei schließlich in Ihre Struktur zu entpacken, können Sie den folgenden Code verwenden:
var service Service err := yaml.Unmarshal(yourFile, &service) if err != nil { panic(err) }
Dieser Ansatz ermöglicht den Zugriff auf die geparsten Daten über die Servicestruktur, sodass Sie Folgendes tun können Interagieren Sie mit den Informationen der YAML-Datei in Ihrer Go-Anwendung.
Das obige ist der detaillierte Inhalt vonWie analysiere ich eine YAML-Datei mit verschachtelten Schlüssel-Wert-Paaren in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!