48 lines
806 B
Go
48 lines
806 B
Go
package config
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"io/ioutil"
|
|
"reflect"
|
|
)
|
|
|
|
type Field struct {
|
|
JsonName string
|
|
YamlName string
|
|
PropName string
|
|
EnvName string
|
|
CliName string
|
|
Value reflect.Value
|
|
DefaultValue string
|
|
Separator string
|
|
}
|
|
|
|
type Config struct {
|
|
Fields []Field
|
|
}
|
|
|
|
func (this *Config) Init() *Config {
|
|
if this.Fields == nil {
|
|
this.Fields = []Field{}
|
|
}
|
|
|
|
return this
|
|
}
|
|
|
|
func (this *Config) ParseJSON(jsonFile string, data interface{}) error {
|
|
raw, err := ioutil.ReadFile(jsonFile)
|
|
if err != nil {
|
|
return errors.New("Can't open json file. Err: " + err.Error())
|
|
}
|
|
|
|
err = json.Unmarshal(raw, data)
|
|
if err != nil {
|
|
return errors.New("Failed unmarshal json. Err: " + err.Error())
|
|
}
|
|
|
|
//fmt.Printf("Data: %v", *data.(*interface{}))
|
|
|
|
return nil
|
|
}
|