Heim  >  Artikel  >  Backend-Entwicklung  >  Wie analysiere ich eine YAML-Datei mit verschachtelten Schlüssel-Wert-Paaren in Go?

Wie analysiere ich eine YAML-Datei mit verschachtelten Schlüssel-Wert-Paaren in Go?

DDD
DDDOriginal
2024-11-10 22:05:02349Durchsuche

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

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!

Stellungnahme:
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