Go で複雑な YAML ファイルを効果的に解析するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-14 11:53:02
オリジナル
572 人が閲覧しました

How to Effectively Parse Complex YAML Files in Go?

Go で YAML ファイルを効果的に解析する

Go で YAML ファイルを正確に解析する方法を理解することは、さまざまなアプリケーションにとって重要です。明確に定義された Go 構造を使用すると、YAML データを効率的に操作できます。

問題ステートメント

クエリで、次の YAML ファイルを解析できないと説明しました。 using Go:

---
firewall_network_rules:
  rule1:
    src:       blablabla-host
    dst:       blabla-hostname
...
ログイン後にコピー

さらに、次の Go を利用しようとしましたcode:

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

...

err = yaml.Unmarshal(yamlFile, &config)
ログイン後にコピー

ただし、このアプローチではエラーが発生しました。これは、src と dst のキーと値のペアに対応する構造が不足している可能性があります。

解決策

YAML ファイルがリストで構成されている場合、次のアプローチは十分です:

---
firewall_network_rules:
  rule1:
    - value1
    - value2
...
ログイン後にコピー

ただし、提供したサンプル service.yaml など、より複雑な YAML 構造の場合:

apiVersion: v1
kind: Service
...
ログイン後にコピー

ネストされた構造に一致するカスタム Go 構造を定義する必要があります。 YAML の構造。例:

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"`
}
ログイン後にコピー

Go 構造を定義したら、yaml.Unmarshal() 関数を使用して YAML データをこれらの構造に解析できます。例:

var service Service

err = yaml.Unmarshal(yourFile, &service)
ログイン後にコピー

これらの手法に従うことで、YAML ファイルを効果的に解析し、Go アプリケーションでデータを利用できます。 YAML ファイルの特定の構造に一致するように Go 構造を調整することを忘れないでください。

以上がGo で複雑な YAML ファイルを効果的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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