赞
踩
YAML(YAML Ain’t Markup Language)是一个可读性高,用来表达数据序列化的格式。
从长远来看,YAML是一种更强大和可行的数据序列化格式
使用冒号(:)表示键值对,
# YAML 表示
log_level: 0
cpu_flag: 0
# 对应的Json表示
{
"log_level": 0,
"cpu_flag": 0,
}
也可以写在一行:
# YAML 表示
{log_level: 0,cpu_flag: 0}
# 对应的Json表示
{
"log_level": 0,"cpu_flag": 0,
}
使用连字符(-)表示:
# YAML表示 - parser - analyser - kpu_exe - hardware # 也可以写在一行 [parser,analyser,kpu_exe,hardware] # 对应Json表示 [ "parser", "analyser", "kpu_exe", "hardware" ] # 也可以写在一行 ["parser","analyser","kpu_exe","hardware"]
最基本的、不可再分的值
# YAML表示 server_conf: socket_conf: source_ip: 0.0.0.0 source_port: 8181 max_link: 65536 thread_num: 2 # Json 表示 { "socket_conf": { "source_ip": "0.0.0.0", "source_port": 8181, "max_link": 65536, "thread_num": 2 } }
# YAML表示
module:
-
parser
-
analyser
-
kpu_exe
-
hardware
# 对应Json表示
{"module": ["parser","analyser","kpu_exe","hardware"]}
# YAML表示
-
- Ruby
- Perl
- Python
-
- c
- c++
- java
# 对应Json表示
[ [ 'Ruby', 'Perl', 'Python' ], [ 'c', 'c++', 'java' ] ]
# YAML表示
data_source:
-
uid: sa
pwd: 2018Ystech
data_source_name: doe_unit_test
use_tables_flag: 0
table_names:[]
-
uid: sa
pwd: 2018Ystech
data_source_name: doe_test2
use_tables_flag: 0
table_names:[]
user:
host: 127.0.0.1
db: 8
book:
host: 127.0.0.1
db: 9
comment:
host: 127.0.0.1
db: 10
通过使用锚点和引用的功能
localhost: &localhost1
host: 127.0.0.1
user:
<<: *localhost1
db: 8
book:
<<: *localhost1
db: 9
comment:
<<: *localhost1
db: 10
其中&表示将localhost1作为localhost的别名,* 标识取别名localhost1对应的value,<<表示将*localhost1代表的map
合并入当前map数据。
对于如下一个yaml文件config.yml:
server_conf:
log_path_conf_windows: C:/Log/
log_path_conf_linux: /home/Log/
log_level: 0
backup_kpu_num: 0
c++示例代码
#include <iostream>
#include "include/yaml-cpp/yaml.h"
using namespace std;
int main()
{
YAML::Node config = YAML::LoadFile("../config.yml");
cout << "windows_log_path: " << config["server_conf"]["log_path_conf_windows"].as<string>() << endl;
cout << "linux_log_path: " << config["server_conf"]["log_path_conf_linux"].as<string>() << endl;
cout << "log_level: " << config["server_conf"]["log_level"].as<int>() << endl;
cout << "backup_kpu_num: " << config["server_conf"]["backup_kpu_num"].as<int>() << endl;
return 0;
}
运行结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。