viper配置文件读取

viper配置文件读取简单使用

  • 使用

    json文件:config/user.json

    {
        "name":"xj",
        "sex":"boy"
    }
    

    使用

    package service
    import (
      "github.com/spf13/viper"
    )
    type User struct{
        Name string `json:"name" `
        Sex string `json:"sex" `
    }
    //初始化
    func init(){
        v := viper.New()
        //第一种读取方式
        v.SetConfigFile("config/user.json") //直接读取配置文件
        //第二种读取方式
        v.SetConfigName("user")     //设置配置文件的名字
      v.AddConfigPath("./config/") //添加配置文件所在的路径
      v.SetConfigType("json")      //设置配置文件类型,可选
        //读取配置文件
      errv := v.ReadInConfig() // 加载配置文件内容
        //处理读取错误
        if errv!=nil{
            logs.Error("v read config error......%s",errv.Error())
        }
        //获取数据
        name:=v.Get("name")
        sex:=v.Get("sex")
        fmt.Printf("name=%s\nsex=%s",name,sex)
        //解析文件到结构体
        userModel:=User{}
        errByUnMarshal:=v.Unmarshal(&userModel)
        //注释---start
        errByUms := v.Unmarshal(&WebLogsConfig, func(config *mapstructure.DecoderConfig) {
            //设置解析结构体对应的标签----默认是"mapstructure"
                config.TagName = "json"//设置对应标签为"json"
         })
        //注释---end
       
        if errByUnMarshal!=nil {
            logs.Error("v Unmarshal config to struct error......%s",errByUnMarshal.Error())
        }
        fmt.Printf("name=%s\nsex=%s",userModel.Name,userModel.Sex)
        //监听配置文件改变
        //监听配置文件改变
      v.WatchConfig()
      v.OnConfigChange(func(in fsnotify.Event) {
          //配置文件改变
          errByRead := v.ReadInConfig()
          if errByRead != nil {
              logs.Error("package model,logs_config init() v read config error......%s",                      errByRead.Error())
          }
          errByUms := v.Unmarshal(&WebLogsConfig, func(config *mapstructure.DecoderConfig) {
              //设置解析对应标签
              config.TagName = "json"
          })
          if errByUms != nil {
              logs.Error("package model,logs_config init() v unmarshal config to struct                       error......%s", errByUms.Error())
          }
      })        
    

}


你可能感兴趣的:(viper配置文件读取)