Go でネストされたキーと値のペアを含む YAML ファイルを解析するにはどうすればよいですか?

DDD
リリース: 2024-11-10 22:05:02
オリジナル
361 人が閲覧しました

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

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート