Go语言【开发】加载JSON配置文件
2024-09-03 09:52:36
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
///
最新文章
- 首页大图淡入淡出效果工具flexslider
- 虚拟机VMWARE上ORACLE License 的计算
- OO的五大原则是指SRP、OCP、LSP、DIP、ISP。
- poj1298 The Hardest Problem Ever 简单题
- python中from module import * 的一个陷阱
- soapui中文操作手册(五)----入门与安全测试
- PHP中使用Session配合Javascript实现文件上传进度条功能
- App Store idfa被拒检查办法
- dialog参数、方法以及事件
- hdu5792--World is Exploding
- 一条sql,有分页,表合并查询,多表连接,用于oracle数据库
- HDOJ/HDU 2717 Catch That Cow 一维广度优先搜索 so easy..............
- Golang开发者常见的坑
- MySQL 忘记root密码解决方法,基于Ubuntu 14.10
- java中PriorityBlockingQueue 和DelayedWorkQueue 区别
- <;jsp:param>;标签给属性赋值时的一个坑
- Log4Net 添加自定义字段并保存到数据库
- GIT 分支管理:多人协作
- Linux中无权限使用sudo
- react native 初识生命周期
热门文章
- 常用方法 读取 Excel的单位格 为 日期格式 的数据
- vue单项数据流
- 60: noi.ac #69
- 驱动中遍历模块,以及获取ntoskrnl.exe基址
- x64下进程保护HOOK
- java自动化配置工具 - autoconfig 简介
- 使用mapreduce清洗简单日志文件并导入hive数据库
- Xor-matic Number of the Graph-CodeForces - 724G
- x86 linux 支持的系统调用参数至多6个
- Data truncation: Out of range value for column &#39;quanity&#39; at row 问题解决方案