Go语言【开发】加载JSON配置文件

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
///

  

 

转载于:https://www.cnblogs.com/lianzhilei/p/11536227.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值