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配置文件来说,更加的简洁,操作也更加简单,同时可以存放不同类型的数据,不会改变原有数据类型,所有的数据类型在读取时 ...
随机推荐
- Salesforce LWC学习(四十二) getRecordNotifyChange已弃用
本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_get ...
- zookeeper04---ZAB协议
转https://www.jianshu.com/p/2bceacd60b8a 1.什么是Zab协议 1.1Zab协议简介 1.2 Zab 协议的特性(怎么保持数据一致性) 2.Zab 协议实现的作用 ...
- fiddler的简单使用
一.fiddler接口测试介绍 二.fiddler过滤器的使用 fiddler可以指定只抓哪些包,通过filters实现 如果需要抓取多个网站,各个需要抓取的网站之间用分号隔开 三.fiddler抓取 ...
- Portainer功能使用之系统管理
系统管理 点击左边功能菜单栏[Teams]添加团队:例如开源吧(ossbar_team)团队 点击左边功能菜单栏[Users]添加用户:例如ossbar用户,密码自定义 角色说明:Environmen ...
- 学习Java Day10
今天学习了数组的相关知识
- CSS_语法格式
* 格式: 选择器{ 属性名1:属性值1: 属性名2:属性值2: ... } *选择器:筛选具有相似特征的元素 *注意: *没一对属性需要使用":"隔开,对最后一对属性可以不加&q ...
- C++练习5 对引用进行初始化
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 const int cInt = 3;//定义常量cInt并 ...
- EPICS Archiver Appliance 单点极限储存速率测试
https://blog.csdn.net/weixin_43767046/article/details/113748775 这个测试一直在进行,虽然因为摸数据库设置而重启过并清过库,但读示波器波形 ...
- 聊聊最近爆火的 CHAT-GPT
Chat-GPT 以问答的方式呈现给用户,如何使用 Chat-GPT,实际上转换为另一个问题:如何有效地提问. 编写程序 难度为"困难",通过率仅 30.9% 的动态规划题: 很稳 ...
- Ansible-playbook 快速入门到放弃
Ansible-playbook 快速入门到放弃 隔岸红尘忙似火,当轩青嶂冷如冰. 1-简介 playbook 相当于可以把模块命令都写入到配置文件里面,这样就可以直接执行配置文件了,类似脚本. 2- ...