我试图为我的小项目解析一个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
{[]}
我错过了什么?
答案 0 :(得分:2)
但它可以帮助别人。
将值放在" "解决了这个问题。 例如。
name: "siteName1"
url: "http://siteUrl1"