beego读取配置yaml配置文件

YAML介绍

YAML实质上是一种通用的数据串行化格式,它的基本语法规则如下:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用tab键,只允许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 符号#表示注释,从这个字符一直到行尾,都会被解析器忽略

YAML支持Go

yaml包可以编码和解码YAML值,它基于著名的libyaml c库来解析和生成YAML数据。

兼容性

yaml包支持大多数YAML1.1和1.2,包括支持anchors,tags,map合并等,但是多文档解析还没有实现。

安装使用

安装gopkg.in/yaml.v2,可以运行命令go get gopkg.in/yaml.v2。具体的接口文档可以查看https://gopkg.in/yaml.v2

演示

test.yml文件

name: 'benben_2015'
website: 'www.csdn.com'
year: 2015

favourite:
 - 'play games'
 - 'programming'
 - 'reading'

main文件和test.yml在同一目录下

package main

import (
    "fmt"
    "io/ioutil"
    "gopkg.in/yaml.v2"
)

type CSDN struct {
    Name      string
    WebSite   string
    Year      int
    Favourite []string
}

func main() {
    content, err := ioutil.ReadFile("./test.yml")
    if err != nil {
        fmt.Println(err)
    }
    csdn := CSDN{}
    yaml.Unmarshal(content, &csdn)
    fmt.Println(csdn.Name)
    fmt.Println(csdn.Favourite)
}

beego支持yaml

安装使用

beego支持解析的文件格式有ini,json,xml,yaml,可以通过如下方式进行安装,go get github.com/astaxie/beego/config。使用yaml驱动就需要手工安装引入包go get -u github.com/astaxie/beego/config/yaml

演示

yaml文件相同还是用上面的代码,而main文件有变化。

package main

import (
    "fmt"
    "github.com/astaxie/beego/config/yaml"
)

type CSDN struct {
    Name      string
    WebSite   string
    Year      int
    Favourite []string
}

func main() {
    conf, err := yaml.ReadYmlReader("./test.yml")
    if err != nil {
        fmt.Println(err)
    }
    name := conf["name"]
    favourite := conf["favourite"]
    fmt.Println(name)
    fmt.Println(favourite)
}

但是它对一些复杂的结构还不支持,例如不支持map列表。

猜你喜欢

转载自blog.csdn.net/benben_2015/article/details/80070041