我正在尝试将配置文件(config.json)加载到go结构中。我正在使用“ json.Unmarshal”资源进行反序列化。但是,该结构永远不会加载整个层次结构,从而限制了第二层结构。
那是我的结构
//ConfigurationsMQ struct data
type ConfigurationsMQ struct {
Rabbitmq RabbitMQ `json:"rabbitmq"`
}
//RabbitMQ struct data
type RabbitMQ struct {
Connections ConnectionsMQ `json:"connections"`
}
//ConnectionsMQ provide a array of connections profile
type ConnectionsMQ struct {
Production ConnectionInfo `json:"production"`
Local ConnectionInfo `json:"local"`
}
//ConnectionInfo stores data to RabbitMQ connection
type ConnectionInfo struct {
ConnectionName string `json:"ConnectionName"`
ServerIP string `json:"ServerIP"`
ServerPort string `json:"ServerPort"`
ServerUsername string `json:"ServerUsername"`
ServerPassword string `json:"ServerPassword"`
}
那是完成工作的职能
//OpenConfig return the config structure
func OpenConfig() ConfigurationsMQ {
byt, err := ioutil.ReadFile("./Utils/config.json")
AddLog("open file action", err, true)
var conf ConfigurationsMQ
errJSON := json.Unmarshal(byt, &conf)
AddLog("Unmarshal a Json file", errJSON, true)
return conf
}
使用的json
${
"rabbitmq": {
"connections":{
"local":{
"ConnectionName":"Local",
"ServerIP" : "127.0.0.1",
"ServerPort": "5672",
"ServerUsername" : "guest",
"ServerPassword" : "guest"
},
"production":{
"ConnectionName":"Local",
"ServerIP" : "127.0.0.1",
"ServerPort": "5672",
"ServerUsername" : "guest",
"ServerPassword" : "guest"
}
}
}
}
我只是尝试了很多使用Google搜索功能的技巧:修改了大小写名称;使用指针;我更改了声明的顺序,并测试了数百种安装结构的方法。 仅使用两个级别的json即可正常工作。