Heim > Backend-Entwicklung > Golang > Wie kann man komplexe YAML-Dateien in Go effektiv analysieren?

Wie kann man komplexe YAML-Dateien in Go effektiv analysieren?

Mary-Kate Olsen
Freigeben: 2024-11-14 11:53:02
Original
629 Leute haben es durchsucht

How to Effectively Parse Complex YAML Files in Go?

YAML-Dateien effektiv in Go analysieren

Für verschiedene Anwendungen ist es von entscheidender Bedeutung, zu verstehen, wie YAML-Dateien in Go genau analysiert werden. Durch die Verwendung wohldefinierter Go-Strukturen kann man effizient mit YAML-Daten interagieren.

Problemstellung

In Ihrer Anfrage haben Sie beschrieben, dass die folgende YAML-Datei nicht analysiert werden konnte mit Go:

---
firewall_network_rules:
  rule1:
    src:       blablabla-host
    dst:       blabla-hostname
...
Nach dem Login kopieren

Darüber hinaus haben Sie versucht, den folgenden Go-Code zu verwenden:

type Config struct {
    Firewall_network_rules map[string][]string
}

...

err = yaml.Unmarshal(yamlFile, &config)
Nach dem Login kopieren

Dieser Ansatz führte jedoch zu einem Fehler, möglicherweise aufgrund des Fehlens entsprechender Strukturen für die Schlüssel-Wert-Paare src und dst.

Lösung

Wenn die YAML-Datei aus Listen besteht, reicht der folgende Ansatz aus:

---
firewall_network_rules:
  rule1:
    - value1
    - value2
...
Nach dem Login kopieren

Für komplexere YAML-Strukturen wie das von Ihnen bereitgestellte Beispiel service.yaml gilt jedoch Folgendes:

apiVersion: v1
kind: Service
...
Nach dem Login kopieren

Sie müssen benutzerdefinierte Go-Strukturen definieren, die der verschachtelten Struktur der YAML entsprechen. Zum Beispiel:

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"`
    } `yaml:"metadata"`
    Spec struct {
        Type     string `yaml:"type"`
        Selector struct {
            App string `yaml:"app"`
        } `yaml:"selector"`
        Ports []struct {
            Name       string `yaml:"name"`
            Port       int    `yaml:"port"`
            TargetPort int    `yaml:"targetPort"`
            NodePort   int    `yaml:"nodePort,omitempty"`
        } `yaml:"ports"`
    } `yaml:"spec"`
}
Nach dem Login kopieren

Sobald die Go-Strukturen definiert sind, können Sie die Funktion yaml.Unmarshal() verwenden, um die YAML-Daten in diese Strukturen zu analysieren. Zum Beispiel:

var service Service

err = yaml.Unmarshal(yourFile, &service)
Nach dem Login kopieren

Durch Befolgen dieser Techniken können Sie YAML-Dateien effektiv analysieren und die Daten in Ihren Go-Anwendungen nutzen. Denken Sie daran, Ihre Go-Strukturen an die spezifische Struktur Ihrer YAML-Dateien anzupassen.

Das obige ist der detaillierte Inhalt vonWie kann man komplexe YAML-Dateien in Go effektiv analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage