Go言語【開発】JSONプロファイルをロードする

2384 ワード

JSON配置ローディング
 
補助URL、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
///
  
 
転載先:https://www.cnblogs.com/lianzhilei/p/11536227.html