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配置文件的更多相关文章

  1. selenium启动Chrome时,加载用户配置文件

    selenium启动Chrome时,加载用户配置文件   Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome ...

  2. spring动态加载(刷新)配置文件 [复制链接]

    待验证 在程序开发时,通常会经常修改spring的配置文件,不得不重启tomcat来加载spring配,费时费力.如果能在不重启tomcat的情况下,手动动态加载spring 配置文件,动态重启读取s ...

  3. VS2013无法加载JSON格式

    js中通过$.getJSON加载.json 文件时,报如下错误: 解决方案:dos命令中打开 IIS Express  ,执行如下命令: appcmd set config /section:stat ...

  4. ios -网络加载json和本地加载json

    1网络加载json的时候,要在模型的实现文件里写: - (void)setValue:(id)value forKey:(NSString *)key { } 2本地加载json的时候,要在模型的实现 ...

  5. Spring中加载xml配置文件的六种方式

    Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog  因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...

  6. dojo 加载Json数据

    1.今天研究了dojo datagrid加载WebService后台传上来的数据.研究来研究去发现他不是很难.用谷歌多调试一下就好了. 2.看很多例子,这个例子能够更好的帮我解决问题:https:// ...

  7. 使用getJSON()方法异步加载JSON格式数据

    使用getJSON()方法异步加载JSON格式数据 使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数组,并对获取的数据进行解析,显示在页面中,它的调用格式为: jQuery. ...

  8. IOS开发-加载本地音乐

    IOS开发-加载本地音乐 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text() ...

  9. OpenLayers学习笔记(十)— 动态加载JSON数据模拟航迹线

    在openlayers 3 上,加载本地json数据,动态绘制航迹线,以飞机当前位置为地图中心,此例子是模拟DEMO 本文链接:动态加载JSON数据模拟航迹线 作者:狐狸家的鱼 GitHub:八至 前 ...

随机推荐

  1. 用Matlab证明三维勾股定理

    证明代码: syms a b c ; ab=sqrt(a^+b^); bc=sqrt(c^+b^); ca=sqrt(c^+a^); p=(ab+bc+ca)/; s1=(p*(p-ab)*(p-bc ...

  2. npm link 的用法

    npm link 的用法 先到对应的自定义包下执行 npm link 会读取对应的 packagejson 中的名称 然后到对应的目录下执行 npm link your/own/npm/name 就会 ...

  3. Flume 实战,将多台机器日志直接收集到 Kafka

    目前我们使用的一个 b 端软件的报错日志分散在集群各处,现在想把它收集到一个地方然后统一丢进 Kafka 提供给下游业务进行消费. 我想到了 flume,之前让同事搭建的这次自己想多了解一些细节于是就 ...

  4. pwd函数实现

    /* * 文件名:mypwd.c * 描述: 实现简单的pwd命令 */ #include<stdio.h> #include<stdlib.h> #include<di ...

  5. IIS基本设置、回收机制、性能、并发、安全性

    通常把站点发布到IIS上运行正常后,很少会去考虑IIS提供的各种参数,如何配置才是最适合当前站点运行需要的?这篇文章,从基本设置.回收机制.性能.并发.安全性等IIS设置讲解应当如何优化. 先来“II ...

  6. [Beta阶段]第七次Scrum Meeting

    Scrum Meeting博客目录 [Beta阶段]第七次Scrum Meeting 基本信息 名称 时间 地点 时长 第七次Scrum Meeting 19/05/13 大运村寝室6楼 35min ...

  7. js待学习

    异步原理 事件循环 任务队列

  8. HTML5快速写页面的方法

    1 如果有原型的HTML页面(Axure导出来),可以在此从F12的“查看器”基础上拷贝到一个新文件,继续写代码. 2 利用EditPlus软件的工具 3 使用Dreamweaver CS5,可以直观 ...

  9. javascript prototype理解

    如图比较好的阐述了prototype和__proto__ 简单的可以这么理解: 狗类A( function foo()),狗类A的模板描述:A.模板 (foo.prototype)是一个对象objec ...

  10. g-api notes

    目录 Q: What is GOrigin? What the meaning of parameters GMat(const GNode &n, std::size_t out) Q: h ...