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

Casso_W · · 1199 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  • 本来是用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

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1199 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传