我正在尝试使用Go解析一个yaml文件。不幸的是,我无法弄清楚该怎么做。我有一个yaml文件,内容如下:
---
firewall_network_rules:
rule1:
src: blablabla-host
dst: blabla-hostname
...
我有这段Go代码,但它不起作用:
package main
import (
"fmt"
"io/ioutil"
"path/filepath"
"gopkg.in/yaml.v2"
)
type Config struct {
Firewall_network_rules map[string][]string
}
func main() {
filename, _ := filepath.Abs("./fruits.yml")
yamlFile, err := ioutil.ReadFile(filename)
if err != nil {
panic(err)
}
var config Config
err = yaml.Unmarshal(yamlFile, &config)
if err != nil {
panic(err)
}
fmt.Printf("Value: %#v\n", config.Firewall_network_rules)
}
当我运行这个程序时,会出现一个错误。我认为这是因为我还没有为源(src)和目标(dst)键/值创建结构体。顺便说一下,当我将其更改为列表时,它可以正常工作。
所以上述代码解析了这个内容:
---
firewall_network_rules:
rule1:
- value1
- value2
...
yaml:"firewall_network_rules"
。有关YAML库中结构标记用法的文档,请参见此处:http://godoc.org/gopkg.in/yaml.v2#Marshal - elithrar