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()) } })
}