美文网首页
viper配置文件读取

viper配置文件读取

作者: 五岁小孩 | 来源:发表于2021-01-26 16:21 被阅读0次

    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配置文件读取

          本文链接:https://www.haomeiwen.com/subject/wbmonktx.html