Go--解析yaml文件
yaml 文件是目前最常用的配置文件,使用go语言编写代码和工具时,也会用到yaml文件,将服务配置及中间件等信息定义到yaml文件中,后续可根据实际场景来选用。
//先下载外部包
go get -u gopkg.in/yaml.v2
1、定义yaml配置文件
conf/test.yaml
ck:
host: 11.11.11.11
port: 9001
database: db2
username: test2
password: 123ck456
user: test
password: 123yy456
host: 10.10.10.10
port: 3306
dbname: db1
2、主程序
package main import (
"fmt"
"gopkg.in/yaml.v3"
"io/ioutil"
) type Conn struct {
Ck struct {
Host string `yaml:"host"`
Port string `yaml:"port"`
Database string `yaml:"database"`
Username string `yaml:"username"`
Password string `yaml:"password"`
}
}
type Mysql struct {
User string `yaml:"user"`
Password string `yaml:"password"`
Host string `yaml:"host"`
Port string `yaml:"port"`
DBname string `yaml:"dbname"`
} const cfgFile = "conf/test.yaml" func main() {
data, err := ioutil.ReadFile(cfgFile) //读取配置文件的路径
if err != nil {
fmt.Printf("err: %v\n", err)
return
} var conf Conn
if err := yaml.Unmarshal(data, &conf); err != nil { //将yaml文件中的信息反序列化给conf结构体
fmt.Printf("err: %v\n", err)
return
}
yml, _ := yaml.Marshal(conf) //序列化为yaml文件
fmt.Printf("conf: %#v\n", conf)
fmt.Printf("%s\n", yml) var confs Mysql
if err := yaml.Unmarshal(data, &confs); err != nil {
fmt.Printf("err: %v\n", err)
return
}
yaml, _ := yaml.Marshal(confs)
fmt.Printf("conf: %#v\n", confs)
fmt.Printf("%s\n", yaml)
}
3、输出结果
conf: main.Conn{Ck:struct { Host string "yaml:\"host\""; Port string "yaml:\"por
t\""; Database string "yaml:\"database\""; Username string "yaml:\"username\"";
Password string "yaml:\"password\"" }{Host:"11.11.11.11", Port:"9001", Database:
"db2", Username:"test2", Password:"123ck456"}}
ck:
host: 11.11.11.11
port: "9001"
database: db2
username: test2
password: 123ck456
conf: main.Mysql{User:"test", Password:"123yy456", Host:"10.10.10.10", Port:"330
6", DBname:"db1"}
user: test
password: 123yy456
host: 10.10.10.10
port: "3306"
dbname: db1
将yaml文件中的信息反序列化给Config结构体
Go--解析yaml文件的更多相关文章
- 使用ruamel.yaml库,解析yaml文件
在实现的需求如下: 同事提供了一个文本文件,内含200多个host与ip的对应关系,希望能在k8s生成pod时,将这些对应关系注入到/etc/hosts中. 网上看文档,这可以通过扩充pod中的hos ...
- python解析yaml文件
YAML语法规则: http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/ 下载PyYAML: http://www.yaml.org/ 解压 ...
- c++ 解析yaml文件
一直用c++操作ini做配置文件,想换成yaml,在全球最大的同性交友网站github上搜索,看有没有开源的库,功夫不负有心人,找到了yaml-cpp,用他解析了一个yaml的例子非常好使,分享一下如 ...
- 解析YAML文件
YamlMapFactoryBean yamlMapFactoryBean = new YamlMapFactoryBean(); yamlMapFactoryBean.setResources(ne ...
- python 解析 yaml文件
import yaml with open("./test.yaml") as f: x = yaml.load(f) print(x) [{'tasks': [{'yum': { ...
- Python--代码1(接口测试:测试用例从数据库读取写到yaml文件中)
一. 从数据库中读取全部接口,并写入yaml文件 数据库中的数据存储格式如下图: import pymysql import os import json # from ruamel import y ...
- YAML文件解析
YAML是“另一种标记语言”的外语缩写,YAML 是一种比JSON(json多层次{ 与 [ 会被搞晕的)更直观的表现形式,展示上更易查错和关系描述.因为不需要一个专业工具就可以排查正确性.YAML目 ...
- python基础——python解析yaml类型文件
一.yaml介绍 yaml全称Yet Another Markup Language(另一种标记语言).采用yaml作为配置文件,文件看起来直观.简洁.方便理解.yaml文件可以解析字典.列表和一些基 ...
- springboot中对yaml文件的解析
一.YAML是“YAML不是一种标记语言”的外语缩写 (见前方参考资料原文内容):但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名.它是一种直观的能够被电脑识别的数据序列化 ...
- yaml文件解析详解
前言 yaml文件是什么?yaml文件其实也是一种配置文件类型,相比较ini,conf配置文件来说,更加的简洁,操作也更加简单,同时可以存放不同类型的数据,不会改变原有数据类型,所有的数据类型在读取时 ...
随机推荐
- XMind 2022 安装教程 (11-30亲测有效)
下载地址 下载直通车:立即下载 解压文件 鼠标右击[XMind2022(64bit)]压缩包(win11系统需先点击"显示更多选项")选择[解压到 XMind2022(64bit) ...
- Docker中apt-get update失败解决方案
一.更换apt的镜像源 1. 进入目录 cd /etc/apt 2. 备份源文件 cp /etc/apt/sources.list /etc/apt/sources.list.bak 3. 更改镜像源 ...
- 从实现到原理,聊聊Java中的SPI动态扩展
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 八股文背多了,相信大家都听说过一个词,SPI扩展. 有的面试官就很喜欢问这个问题,SpringBoot的自动装配是如何实现的? 基本上,你一说是 ...
- YouCompleteMe用法总结
1.将.ycm_extra_conf.py拷贝到工程目录,然后打开,将自己的include目录添加进去
- 微信小程序-【转发好友】以及中文标题乱码问题解决
微信小程序的转发功能,参考官方文档,使用的buttom的open-type功能,下面是转发功能的具体实现. // 通过按钮的 open-type="share"实现转发,触发onS ...
- JZOJ 3213. 【SDOI2013】直径
题目 思路 树的直径很好求,两遍 \(dfs\),记下两个端点 然后很显然所有直径经过的边必然在我们求出的这条直线上 那么我们只要判断一下一条直径上的边是不是答案 假设当前边为 \(i\) 那么把 \ ...
- C# HttpClient使用和注意事项,.NET Framework连接池并发限制
System.Net.Http.HttpClient 类用于发送 HTTP 请求以及从 URI 所标识的资源接收 HTTP 响应. HttpClient 实例是应用于该实例执行的所有请求的设置集合,每 ...
- JavaSE基础 (全网最全知识点)
背景介绍 java运行机理(即使编译型语言,又是解释型语言) 编译型语言(如:c语言) 源代码需要通过预编译形成可执行文件,再由系统执行该文件形成可识别的二进制文件 解释型语言 边执行边转换.源代码先 ...
- 小程序动态class与动态style的写法:
style = "opacity :{{num}}" class = "vp {{opacity == 0 ? 'opacity1':''}}"
- java-tocsv
1.依赖 <dependencies> <dependency> <groupId>org.apache.poi</groupId> <artif ...