golang viper 使用记录: 读取不到配置文件json


本文摘自网络,作者,侵删。

  • 本来是用yaml格式的配置文件, 配合viper使用很简单, 但是读取值得时候有点麻烦, 于是想读取json格式然后直接反序列化到定义好的结构体中
问题: 怎么都读取不到配置文件数据
解决: 很无语,看代码; 必须点读取,才能反序列化
package parsecfg

import (
    "fmt"
    "os"

    "github.com/spf13/viper"
)

// GlobalConfig 全局配置
var GlobalConfig EnvCfg

// EnvCfg app 基本设置
type EnvCfg struct {
    Debug            bool
    DbType           string
    Port             string
    AllowCrossDomain bool
    Mysql            MysqlCfg
    Redis            RedisCfg
}

// MysqlCfg mysql配置
type MysqlCfg struct {
    Write MysqlWriteCfg
    Read  MysqlReadCfg
}

// MysqlWriteCfg mysql配置
type MysqlWriteCfg struct {
    Host            string
    DataBase        string
    Port            string
    PreFix          string
    User            string
    PassWord        string
    SetMaxIdleConns int
    SetMaxOpenConns int
    ChatSet         string
}

// MysqlReadCfg mysql配置
type MysqlReadCfg struct {
    Host            string
    DataBase        string
    Port            string
    PreFix          string
    User            string
    PassWord        string
    SetMaxIdleConns int
    SetMaxOpenConns int
    ChatSet         string
}

// RedisCfg redis配置
type RedisCfg struct {
    Host      string
    Port      string
    MaxIdle   int
    MaxActive int
}

func init() {
    path, _ := os.Getwd()
    cfg := viper.New()
    viper.WatchConfig()
    cfg.AddConfigPath(path + "/config")
    cfg.SetConfigName("cfg")
    cfg.SetConfigType("json")
    if err := cfg.ReadInConfig(); err != nil { // 必须 先 读取 `ReadInConfig`
        panic(err)
    }
    if err := cfg.Unmarshal(&GlobalConfig); err != nil { // 才能反序列化到 结构体里面
        panic("读取配置文件出错")
    }
    fmt.Println(GlobalConfig)
}

  • 最后,我 也是简单搜索 博文来看看viper使用方法的, 但是由于自己仅仅是想反序列化到结构体中, 所以只是直接反序列化 才出现了这个问题.

本文来自:简书

感谢作者:Casso_W

查看原文:golang viper 使用记录: 读取不到配置文件json

相关阅读 >>

Golang 原子操作

Go写的第一个小程序记账系统,来啦

leetcode503 下一个更大元素 ii Golang

09 Golang sort排序

Go 为什么比php性能高

beeGo项目和Go项目 打包部署到linux

Go stl 查询 db 引发的内存泄露

now扩展-Go的时间工具箱

Go - Go build 各种系统下的可执行文件

Golang elasticsearch7的使用

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...