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 ファイルを構造体にアンマーシャルするには、次のコードを使用できます:
var service Service err := yaml.Unmarshal(yourFile, &service) if err != nil { panic(err) }
このアプローチにより、サービス構造体を介して解析されたデータにアクセスできるようになり、Go アプリケーションで YAML ファイルの情報を操作できるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3