如何在YAML反编组中直接访问嵌套的内部键值



我的配置包含内部结构的多个结构化配置,在本例中是一个公司。

在顶层,我想直接访问我知道存在于config.yaml中的公司的特定属性。

是否可以使用struct标签进行这种解组?

package main
import (
"fmt"
"gopkg.in/yaml.v2"
)
type Org struct {
Ceo string `yaml:"ceo"`
}
type Config struct {
Companies map[string]Org `yaml:"companies"`
GoogleCEO string         `yaml:"companies.google.ceo"`
}
func main() {
var config Config
yamlFile := []byte(`companies:
google:
ceo: "Sundar Pichai"
amazon:
ceo: "Jeff Bezos"`)
err := yaml.Unmarshal(yamlFile, &config)
check(err)
fmt.Printf("config:n%#v", config)
}
func check(e error) {
if e != nil {
panic(e)
}
}

https://go.dev/play/p/G_1NV46yWrv

不幸的是,你不能用标签来做。

最接近的选项是嵌套结构:

type Config struct {
Companies struct {
Google struct {
CEO string `yaml:"ceo"`
} `yaml:"google"`
} `yaml:"companies"`
}

https://go.dev/play/p/28pcPUiZvO-

最新更新