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配置文件来说,更加的简洁,操作也更加简单,同时可以存放不同类型的数据,不会改变原有数据类型,所有的数据类型在读取时 ...
随机推荐
- JAVA虚拟机16-方法的动态调用
更详细:https://www.cnblogs.com/jthr/p/15762527.html 1.子类重写父类方法 1.1父类 public class Father { public int n ...
- Blazor 拖放上传文件转换格式并推送到浏览器下载
前言 昨天有个小伙伴发了一个老外java编写的小工具给我,功能是转换西班牙邮局快递Coreeos express的单据格式成Amazon格式,他的需求是改一下程序为匹配转换另一个快递公司MRW格式到A ...
- STM32F4库函数初始化系列:三重ADC——DMA
1 void _DMA_Configuration(void) 2 { 3 DMA_InitTypeDef DMA_InitStructure; 4 5 /* DMA2 Stream0 channel ...
- Spring框架-AOP核心
Spring AOP AOP (Aspect Oriented Programming) 面向切面编程 OOP(Object Oriented Programming)面向对象编程,用对象的思想来完善 ...
- 郁金香-了解MFC信息机制
控件的事件 窗口的信息
- 【KAWAKO】DTLN-1Dconv的原理
目录 前言 怎么理解DTLN的第二部分呢 对1D卷积的具体理解 1D卷积相较于STFT的优缺点 优点 缺点(不太确定) 参考文献 前言 DTLN是一种能够实时处理的语音降噪算法,其开源代码在这里,论文 ...
- pytorch学习笔记一之张量
1. 张量¶ 1.1. 概述¶ 张量(tensor)是pytorch中的一种较为基础的数据结构,类比于numpy中的ndarrays,在pytorch中,张量可以在GPU中进行运算 通 ...
- Java项目常用的异常处理
一.常见异常形式 1.空指针异常(java.lang.nullpointerexception)发生该情况一般是字符串变量未初始化,数组未初始化,类对象未初始化等.还有一种情况是当该对象为空时你并没有 ...
- 剖析flutter_download_manager学习如何做下载管理,暂停和取消
前言 内容类应用中图片或文件下载,一般应用中应用更新和升级,这些都是经典的下载场景.下载是项目中基础且重要的模块. 从代码逻辑复用性和人力成本考虑,一直想实现一个纯Dart实现的下载库,作为技术储备. ...
- lama-cleaner全部命令行参数
usage: main.py [-h] [--host HOST] [--port PORT] [--config-installer] [--load-installer-config] [--in ...