Tôi đang cố gắng phân tích cú pháp tệp yaml bằng Go. Thật không may tôi không thể tìm ra cách. Các tập tin yaml tôi có là thế này:Đi phân tích cú pháp tệp yaml
---
firewall_network_rules:
rule1:
src: blablabla-host
dst: blabla-hostname
...
tôi có mã Go này, nhưng nó không hoạt động:
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)
}
Khi tôi chạy này, tôi nhận được một lỗi. Tôi nghĩ rằng đó là bởi vì tôi đã không tạo ra một cấu trúc cho src và dst khóa/giá trị. FYI: khi tôi thay đổi nó thành một danh sách, nó hoạt động.
đang Vậy trên phân tích này:
---
firewall_network_rules:
rule1:
- value1
- value2
...
Thử nhiều thành ngữ 'FirewallNetworkRules' và thêm một thẻ struct để nắm bắt những định dạng YAML - ví dụ '' yaml: "firewall_network_rules" '' Xem tại đây để biết các tài liệu về cách sử dụng thẻ struct trong thư viện YAML: http://godoc.org/gopkg.in/yaml.v2#Marshal – elithrar
Cảm ơn bạn đã đề xuất, nó thực sự làm rõ mã của tôi. –