1
我想解析一個我有的小項目的yaml文件。在Go中解析YAML:列表中的地圖
目標是讓應用程序的信息在配置文件中包含服務器文件的地址,以防需要更新。它在一個配置文件中以便於「可編輯性」目的。
最主要的是在應用程序真正開始之前有一些連接測試需要完成。我試圖解析該文件。 它看起來像這樣:
conf.yaml
app:
version: "1"
name: MySuperApp
configLocation: http://configaddress
test_url:
-
name: siteName1
url: http://siteUrl1
-
name: siteName2
url: http://siteUrl2
proxy_port: 5678
我寫了下面,我能得到什麼在應用程序:但是不知道在test_url是:
package main
import (
"fmt"
"io/ioutil"
"path/filepath"
"gopkg.in/yaml.v2"
)
type AppInfo struct {
Name string `yaml:"name"`
Version string `yaml:"version"`
}
type Config struct {
App AppInfo `yaml:"app"`
}
type TestUrl struct {
Name string `yaml:"name"`
Url string `yaml:"url"`
ProxyPort string `yaml:"proxy_port,omitempty"`
}
type TestUrls struct {
ATest []TestUrl `yaml:"test_url"`
}
func main() {
filename, _ := filepath.Abs("./config/conf.yaml")
yamlFile, err := ioutil.ReadFile(filename)
if err != nil {
panic(err)
}
var config Config
err = yaml.Unmarshal(yamlFile, &config)
if err != nil {
panic(err)
}
var test TestUrls
err = yaml.Unmarshal(yamlFile, &test)
if err != nil {
panic(err)
}
fmt.Println("Application : ", config.App.Name,"\nVersion : ", config.App.Version)
fmt.Println(test)
}
作爲輸出我得到:
Application : MySuperApp
Version : 1
{[]}
我錯過了什麼?
給出的文件和代碼在這裏運行的很好。 '''Application:MySuperApp Version:1 {[{siteName1 http:// siteUrl1} {siteName2 http:// siteUrl2 5678}]} ''' – sadlil