Go での YAML ファイルの解析
Go での YAML ファイルの解析には、gopkg.in/yaml.v2 を通じて利用可能な YAML ライブラリの利用が含まれます。提供されたコードは、次のようなネストされたキーと値のペアを含む YAML ファイルを解析するように設計されています:
firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostname
ただし、値を伴わないキーと値のペアを解析しようとすると問題が発生します。実装された構造体ではこれらの値が定義されていないため、解析中にエラーが発生します。
この問題に対処するには、Google Cloud や Kubernetes の service.yaml などの実際の YAML サンプルを組み込むことを検討してください。
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
この例では、ネストされたキーと値の関係と、実際の使用例を示します。対応する Go 構造体は次のようになります。
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"` } }
プロセスを簡素化するために、yaml-to-go や json-to-go などのサービスは、YAML を Go 構造体に変換するための便利なツールを提供し、解析タスクをより管理しやすくします。 .
最後に、YAML ファイルを構造体にアンマーシャルするには、次を使用できます。 code:
var service Service err := yaml.Unmarshal(yourFile, &service) if err != nil { panic(err) }
このアプローチにより、サービス構造体を介して解析されたデータにアクセスできるようになり、Go アプリケーションで YAML ファイルの情報を操作できるようになります。
以上がGo でネストされたキーと値のペアを含む YAML ファイルを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。