我想用Go解析yaml文件。不幸的是我無法弄清楚如何。 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
...
嘗試更地道'FirewallNetworkRules'並添加標籤結構捕捉YAML格式 - 例如''yaml:「firewall_network_rules」'' 請參閱這裏瞭解YAML庫中結構標籤使用情況的文檔:http://godoc.org/gopkg.in/yaml.v2#Marshal – elithrar 2015-02-23 23:51:42
感謝您的建議,它確實澄清我的代碼。 – 2015-02-24 08:01:10