JSON配置加载
辅助网址,JSON转结构体对应 http://json2struct.mervine.net/
从JSON文件中加载配置到全局变量中
配置文件 config.json
{ "HTTP服务地址": "IP地址", "host1": "10.45.151.75", "HTTP服务端口": "监听端口", "port1": 8080, "数据库配置": "从数据库中读取信息", "dbConfig": { "host":"10.45.151.1", "port" : 3306, "db" : "pbx", "user" : "remote", "passwd" : "tx_1234abc" }, "rabbitmqConfig": { "host":"10.45.151.75", "port" : 5672, "vhost" : "/", "user" : "remote", "passwd" : "tx_1234abc" } }
配置初始化包 Config.go
package main import ( "encoding/json" "fmt" "io/ioutil" ) type http struct { Host string `json:"host1"` Port int `json:"port1"` } type db struct { Host string `json:"host"` Port int `json:"port"` Db string `json:"db"` User string `json:"user"` Passwd string `json:"passwd"` } type amqp struct { Host string `json:"host"` Port int `json:"port"` Vhost string `json:"vhost"` User string `json:"user"` Passwd string `json:"passwd"` } type baseConfig struct { http db `json:"dbConfig"` amqp `json:"rabbitmqConfig"` } var ( HttpConfig *http DBConfig *db AmqpConfig *amqp ) func InitConfig(filename string) (err error) { var ( content []byte conf baseConfig ) if content, err = ioutil.ReadFile(filename); err != nil { fmt.Println(err) return } if err = json.Unmarshal(content, &conf); err != nil { fmt.Println(err) return } HttpConfig = &conf.http DBConfig = &conf.db AmqpConfig = &conf.amqp return }
入口 main.go
package main import "fmt" //import "fmt" func main() { err := InitConfig("c:/Users/9999/go/src/go_calltask/config.json") if err != nil{ return } // 分别打印http db rabbitmq配置 fmt.Println(HttpConfig.Host) fmt.Println(DBConfig.Port) fmt.Println(AmqpConfig.Vhost) } //10.45.151.75 //3306 ///