go 读取配置文件

2018-11-07  本文已影响0人  VIL凌霄

json 格式的配置文件读取

config.json 配置文件内容如下:

{
    "time_out": 20,
    "user_groups": [
        {
            "server": "192.168.1.2",
            "name": "myown",
            "port": 1234,
            "password": "1234567",
            "cipher": "AEAD_CHACHA20_POLY1305",
            "time_out": 10
        }
    ]
}

读取 json 配置文件代码如下:

package main

import(
    "io/ioutil"
    "encoding/json"
    "fmt"
    "time"
)

type UserGroup struct{
    Name string `json:"name"`
    Server    string `json:"server"`
    Port int    `json:"port"`
    Password  string `json:"password"`
    Cipher    string `json:"cipher"`
    Key       string `json:"key"`
    Keygen    int    `json:"key_gen"`
    UDPTimeout    time.Duration  `json:"time_out"`
}

type Config struct {
    UserGroups []*UserGroup `json:"user_groups"`
    UDPTimeout time.Duration `json:"time_out"`
}


/**
 * @msg: 读取json 文件数据,按照参数 v 的格式解析
 * @param: fileName
 * @return: 
 */
func LoadJsonData(fileName string, v interface{}) error{
    data, err := ioutil.ReadFile(fileName)
    if err != nil{
        return err;
    }

    dataJson := []byte(data)

    if err = json.Unmarshal(dataJson, v); err != nil{
        return err
    }
    return nil
}


func main(){
    /**
     * 异常捕获
     */
    defer func() {
        if err := recover(); err != nil{
            fmt.Println("发生异常:",err)
        }
    }()
    var MConfig = &Config{}
    if err := LoadJsonData("config.json", MConfig); err != nil{
        fmt.Println("读取配置错误")
        panic(err)
    }
    fmt.Println("获取到的数据为:", *MConfig.UserGroups[0])
}
上一篇下一篇

猜你喜欢

热点阅读