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
///
Go语言【开发】加载JSON配置文件的更多相关文章
- selenium启动Chrome时,加载用户配置文件
selenium启动Chrome时,加载用户配置文件 Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome ...
- spring动态加载(刷新)配置文件 [复制链接]
待验证 在程序开发时,通常会经常修改spring的配置文件,不得不重启tomcat来加载spring配,费时费力.如果能在不重启tomcat的情况下,手动动态加载spring 配置文件,动态重启读取s ...
- VS2013无法加载JSON格式
js中通过$.getJSON加载.json 文件时,报如下错误: 解决方案:dos命令中打开 IIS Express ,执行如下命令: appcmd set config /section:stat ...
- ios -网络加载json和本地加载json
1网络加载json的时候,要在模型的实现文件里写: - (void)setValue:(id)value forKey:(NSString *)key { } 2本地加载json的时候,要在模型的实现 ...
- Spring中加载xml配置文件的六种方式
Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog 因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...
- dojo 加载Json数据
1.今天研究了dojo datagrid加载WebService后台传上来的数据.研究来研究去发现他不是很难.用谷歌多调试一下就好了. 2.看很多例子,这个例子能够更好的帮我解决问题:https:// ...
- 使用getJSON()方法异步加载JSON格式数据
使用getJSON()方法异步加载JSON格式数据 使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数组,并对获取的数据进行解析,显示在页面中,它的调用格式为: jQuery. ...
- IOS开发-加载本地音乐
IOS开发-加载本地音乐 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text() ...
- OpenLayers学习笔记(十)— 动态加载JSON数据模拟航迹线
在openlayers 3 上,加载本地json数据,动态绘制航迹线,以飞机当前位置为地图中心,此例子是模拟DEMO 本文链接:动态加载JSON数据模拟航迹线 作者:狐狸家的鱼 GitHub:八至 前 ...
随机推荐
- ES6 String和Number扩展
一.String 扩展 ①传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6 又提供了三种新方法. includes():返回布尔值,表示是否 ...
- 怎么把ubuntu升级到最新版本
首先是Ctrl+Alt+T 打开终端,然后在终端中输入指令(更新资源) sudo apt-get update 接着是对软件进行升级.(这是一个漫长的过程,需要下载资源) sudo apt-get u ...
- navigator对象(了解即可)
navigator是window的子对象 navigator.appName // Web浏览器全称navigator.appVersion // Web浏览器厂商和版本的详细字符串navigator ...
- R 语言输入输出 读取命令函参数
输入数据 使用键盘输入数据 只能处理小样本,很少使用 在创建 data.txt 字符串之后,用函数 read.table() 创建数据框 data.1.这种方法可以让我们把数据嵌入到R代码中,此处切记 ...
- js数组reduce()方法的使用和一些应用场景
reduce()的使用 reduce()方法为归并类方法,最常见的应用场景就是,计算数组中每一项的总和. reduce()方法会遍历数组的每一项,它接收两个参数: 第一个参数是:每次遍历都会调用的函数 ...
- k8s相关
卸载kubernetes-dashboard kubectl get secret,sa,role,rolebinding,services,deployments --namespace=kube- ...
- 阿里云ecs centos yarn 安装
安装流程:https://yarn.bootcss.com/docs/install/#centos-stable
- @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化
@JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化 https://www.cnblogs.com/sup ...
- Java学习-053-JSON工具类演示
日常开发工作,经常遇到使用JSON数据,好久没有写了,今晚抽了三个小时时间写了个JSON工具类,主要包含如下几个方法: 获取JSON字符串所有键路径列表: 获取JSON字符串所有键值列表: JSON数 ...
- 深入理解C++中的mutable,using,decltype等关键字
深入理解C++中的mutable关键字 mutable的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词. 在C++中,mutable也是为了突破const的限制而设 ...