Go-如何读取yaml,json,ini等配置文件
1. json使用
JSON 应该比较熟悉,它是一种轻量级的数据交换格式。层次结构简洁清晰 ,易于阅读和编写,同时也易于机器解析和生成。
- 创建 conf.json:
{
"enabled": true,
"path": "/usr/local"
}
- 新建config_json.go:
package main
import (
"encoding/json"
"fmt"
"os"
)
type configuration struct {
Enabled bool
Path string
}
func main() {
// 打开文件
file, _ := os.Open("conf.json")
// 关闭文件
defer file.Close()
//NewDecoder创建一个从file读取并解码json对象的*Decoder,解码器有自己的缓冲,并可能超前读取部分json数据。
decoder := json.NewDecoder(file)
conf := configuration{}
//Decode从输入流读取下一个json编码值并保存在v指向的值里
err := decoder.Decode(&conf)
if err != nil {
fmt.Println("Error:", err)
}
fmt.Println("path:" + conf.Path)
}
启动运行后,输出如下:
D:\Go_Path\go\src\configmgr>go run config_json.go
path:/usr/local
2. ini的使用
INI文件格式是某些平台或软件上的配置文件的非正式标准,由节(section)和键(key)构成,比较常用于微软Windows操作系统中。这种配置文件的文件扩展名为INI。
- 创建 conf.ini:
[Section]
enabled = true
path = /usr/local # another comment
2.下载第三方库:go get gopkg.in/gcfg.v1
- 新建 config_ini.go:
package main
import (
"fmt"
gcfg "gopkg.in/gcfg.v1"
)
func main() {
config := struct {
Section struct {
Enabled bool
Path string
}
}{}
err := gcfg.ReadFileInto(&config, "conf.ini")
if err != nil {
fmt.Println("Failed to parse config file: %s", err)
}
fmt.Println(config.Section.Enabled)
fmt.Println(config.Section.Path)
}
启动运行后,输出如下:
D:\Go_Path\go\src\configmgr>go run config_ini.go
true
/usr/local
3. yaml使用
yaml 可能比较陌生一点,但是最近却越来越流行。也就是一种标记语言。层次结构也特别简洁清晰 ,易于阅读和编写,同时也易于机器解析和生成。
golang的标准库中暂时没有给我们提供操作yaml的标准库,但是github上有很多优秀的第三方库开源给我们使用。
- 创建 conf.yaml:
enabled: true
path: /usr/local
下载第三方库:go get gopkg.in/yaml.v2
创建 config_yaml.go:
package main
import (
"fmt"
"io/ioutil"
"log"
"gopkg.in/yaml.v2"
)
type conf struct {
Enabled bool `yaml:"enabled"` //yaml:yaml格式 enabled:属性的为enabled
Path string `yaml:"path"`
}
func (c *conf) getConf() *conf {
yamlFile, err := ioutil.ReadFile("conf.yaml")
if err != nil {
log.Printf("yamlFile.Get err #%v ", err)
}
err = yaml.Unmarshal(yamlFile, c)
if err != nil {
log.Fatalf("Unmarshal: %v", err)
}
return c
}
func main() {
var c conf
c.getConf()
fmt.Println("path:" + c.Path)
}
启动运行后,输出如下:
D:\Go_Path\go\src\configmgr>go run config_yaml.go
path:/usr/local
Go-如何读取yaml,json,ini等配置文件的更多相关文章
- Golang 入门系列(九) 如何读取YAML,JSON,INI等配置文件
实际项目中,读取相关的系统配置文件是很常见的事情.今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的. 1. json使用 JSON 应该比较熟悉,它是一种轻量级的数据交换 ...
- python-通过configparser模块读取后缀为 .ini 的配置文件信息
前言 一般为了方便会将路径,连接信息等写到配置文件(通常会将这些信息写到yaml,ini....配置文件)中,configparser模块读取后缀为 .ini 的配置文件信息 配置文件格式 #存在 c ...
- yaml,json,ini这三种格式用来做配置文件优缺点
适合人类编写:ini > toml > yaml > json > xml > plist可以存储的数据复杂度:xml > yaml > toml ~ jso ...
- 配置文件yaml和ini
前言 本文主要介绍配置文件yaml和ini的读取. 一.yaml文件 YAML是一个可读性高,易于理解,用来表达数据序列化的格式.语法与python的语法类似.文件后缀 .yaml 下面是yaml文 ...
- python的logging模块之读取yaml配置文件。
python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...
- Asp .Net Core 读取appsettings.json配置文件
Asp .Net Core 如何读取appsettings.json配置文件?最近也有学习到如何读取配置文件的,主要是通过 IConfiguration,以及在Program中初始化完成的. ...
- .net core读取json格式的配置文件
在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用j ...
- c#读取appsetting.json配置文件
asp.net core 取消了web.config配置文件,而将appsetting.json作为了配置文件. 那么,怎么读取相关数据呢?这里我在appsetting.json中添加一些信息 第一种 ...
- python 读取yaml文件
简介 在实际开发过程中,我们可能需要读取一些配置文件的配置信息,例如ini.yaml.property等格式,本文将讲述怎么去获取和设置yaml文件的相关参数. 示例yaml文件 test1: tes ...
随机推荐
- 预学第三天:Ge常用t快捷键,码云,Git使用
目录 Get常用快捷键 码云及Git的使用 Get常用快捷键 git init #创建一个本地的仓库 **gie add test.txt #指定文件添加 ***git add . #当前文件夹下所有 ...
- 一个超级简单的Jetty实例
Maven: <!-- https://mvnrepository.com/artifact/org.mortbay.jetty/jetty --> <dependency> ...
- python基础一整型、bool、字符串
1整型.bool.字符串 1.整型 --数字(int) 用于比较运算的 32位 -2 ** 31 ~ 2 ** 31 -1 64位 -2 ** 63 ~ 2 ** 63 -1 基础运算 ...
- c++小游戏——三国杀
#include<iostream> #include<time.h> #include<stdio.h> #include <stdlib.h> us ...
- Android总结之打开手机相册获取图片
上一篇,总结了如何打开照相机获取图片,详情请看>>>> 这篇将总结如何打开手机存储(相册)来获取手机上的图片. 打开相册 在需要这个功能的类中,我们可以自定义一个方法openA ...
- 小记---idea springboot 报错没有get或者set方法
给idea 安装一个插件即可
- SYNPROXY:廉价的抗DoS攻击方案
DoS攻击是一个永恒的问题,虽然专业厂商的防火墙,负载均衡类的网关设备能比较有效的防御DoS攻击,但黑客们更倾向于x86+GNU/Linux的组合,原因很简单:足够的廉价. 在linux内核3.13里 ...
- 《VR入门系列教程》之16---第一个OculusVR应用
第一个VR应用 之前我们已经将Oculus的开发包导入到空工程中了,现在我们来构建第一个桌面VR的示例.开发包中已经有一个示例场景,只需要几步就可以让这个场景运行起来.我们将要构建的这个Demo ...
- 自动生成Mybatis的Mapper文件
自动生成Mybatis的Mapper文件 工作中使用mybatis时我们需要根据数据表字段创建pojo类.mapper文件以及dao类,并且需要配置它们之间的依赖关系,这样的工作很琐碎和重复,myba ...
- WGAN的改进点和实操
包含三部分:1.WGAN改进点 2.代码修改 3.训练心得 一.WGAN的改进部分: 判别器最后一层去掉sigmoid (相当于最后一层做了一个y = x的激活) 生成器和判别器的loss不 ...