json文件myconfig.json格式
{
"cluster_report_map": {
"参数1": {
"config": [
{
"url": "",
"need_all": false
}
]
}
},
"tag_report_map": {
"参数2": {
"config": [
{
"url": "",
"need_all": false
}
]
}
},
"tag_url": "http://xxxx"
}
解析json
import (
"encoding/json"
"io/ioutil"
"sync/atomic"
)
const configPath = "myconfig/myconfig.json"
type Config struct {
Url string `json:"url"`
NeedAll bool `json:"need_all"`
}
type ReportConfig struct {
Config []Config `json:"config"`
}
type Config struct {
ClusterReportMap map[string]ReportConfig `json:"cluster_report_map"`
TagReportMap map[string]ReportConfig `json:"tag_report_map"`
TagUrl string `json:"tag_url"`
}
func init() {
SetGlobalConfig(&Config{})
}
// gm 配置信息,启动后解析json文件并赋值
var gm = atomic.Value{}
// GlobalConfig 获取全局配置对象
func GlobalConfig() *Config {
return gm.Load().(*Config)
}
// SetGlobalConfig 设置全局配置对象
func SetGlobalConfig(cfg *Config) {
gm.Store(cfg)
}
func Init(configPath string) {
buf, err := ioutil.ReadFile(configPath)
if err != nil {
log.Errof(err)
return
}
cfg := &Config{}
err = json.Unmarshal(buf, cfg)
if err != nil {
log.Errof(err)
return
}
SetGlobalConfig(cfg)
}