Skip to content

Instantly share code, notes, and snippets.

@bdss58
Created July 4, 2018 13:58
Show Gist options
  • Save bdss58/a7c811daaeb581cc69d398546eaa645f to your computer and use it in GitHub Desktop.
Save bdss58/a7c811daaeb581cc69d398546eaa645f to your computer and use it in GitHub Desktop.
load json config file and read keys
var config = make(map[string]interface{})
func loadConfig(path string) (err error) {
if _, err := os.Stat(path); os.IsNotExist(err) {
log.Fatal("config file path is not exist")
}
file, err := os.Open(path)
if err != nil {
log.Fatal("can not open: ", path)
}
data, err := ioutil.ReadAll(file)
if err != nil {
log.Fatalf("read %s faild\n", path)
}
err = json.Unmarshal(data, &config)
if err != nil {
log.Fatal("unmarshal data faild")
}
return
}
func getConfig(keys string) (data interface{}, err error) {
ks := strings.Split(keys, ".")
_data := config
data = _data
for _, k := range ks {
if _, ok := data.(map[string]interface{}); !ok {
return nil, errors.New("get config " + k + " faild")
} else {
_data = data.(map[string]interface{})
}
if _, ok := _data[k]; ok {
data = _data[k]
} else {
return nil, errors.New("get config " + k + " faild")
}
}
return
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment