Yaml 速成查询表
时间:2022-07-22
本文章向大家介绍Yaml 速成查询表,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
若是接触过编程数据结构的,对这个上手贼快. 写过json这些的...主要关注下缩进这些,理解下概念即可! 这里只列出非常高频且通用性高的使用姿势,个别骚姿势自行去提案了解!
写法及注释
值得一提的是:
- 文件首行
%YAML version
,可以指定使用yaml的版本 - 键值对的冒号必须跟随空格才是标准的写法,不然会被当初一个字符串!
- 大小写敏感
- 声明的
key
必须为字符串 - 使用空格缩进(不允许tab)
-
#
行开头到行尾为注释区域 - 值允许的类型有
-
str
: 字符串 -
int | float
: 整形及浮点型 -
list(array)
: 可以理解为数组 -
map(dict)
: 不同语言叫法不一样, 字典算是比较通用的解释 -
null(~)
: 空值 -
date
: iso-8601标准的日期格式
-
%YAML 1.2
---
# 这是一条注释,跟bash一样,#号开头
# 最常见的字符串声明,默认会自带单引号(会转义)
text: 我是测试文本
text1: '我是测试文本1'
text2: '我会被转义n,因为单引号会对需要转义的进行转义'
text3: "双引号则忽略需要转义的,nt"
text4: "这是多行文本
换行的需要空格缩进,
你可以试试"
# |后面可以追加+(保留换行符,默认),-移除每行字符串末尾换行符
text5: |
这种多行文本可读性比较强
类似数组,整齐排列
# 也支持+-,同样是控制换行符
text6: >
这是折叠换行的姿势
会在最后一行末尾保留换行符
试试不就知道了
# 空值,日期声明
isEmpty: ~
isEmpty2: null
date: 2020-07-15
#一维数组的写法(也能理解为列表)
# 写法一
language: ['c','c++']
# 写法二
hight_language:
- 'python'
- 'java'
# 二维数组
# 写法一
testNestedArr1:
- [1,2,3]
- [4,5,6]
# 写法二, 依托缩进
testNestedArr2:
-
- Cat
- Dog
- Goldfish
# map的写法,js中也可以理解为对象,也能理解为一些语言的字典
# 写法一
asiaHuman: {eye: 'black',skin: 'yellow'}
# 写法二
europeHuman:
- eye: 'blue'
- skin: 'white'
# 数组对象写法
arrayMap:
- key: 1
- {test: 'fsadfas'}
# 声明锚点,这个可以用来给其他复用,有点类似继承
# 采用&来声明锚点
human: &base
foot: true
hand: true
head: true
body: true
# 锚点复用,用<<来声明导入(合并到当前),*+锚点来确定引用范围
asiaMan: &asiaM
skin: 'yellow'
<<: *base
otherDesc:
- &inline {strong: True}
skill:
<<: *asiaM
<<: *inline
it: very good
# 类型强制转换
# !!int # 整数类型
# !!float # 浮点类型
# !!bool # 布尔类型
# !!str # 字符串类型
# !!binary # 也是字符串类型
# !!timestamp # 日期时间类型
# !!null # 空值
# !!set # 集合
# !!omap,!!pairs # 键值列表或对象列表
# !!seq # 序列,也是列表
# !!map # 键值表
needStr: !!str '0.01'
needBoolean: !!bool 'false'
needBoolean2: !!bool 'True'
needSeq: !!seq [1,2,2,3]
needFloat: !!float '666.6'
# 关联数组键,我在折腾k8s的过程看过这个写法
# 特意去了解了下,他可以组合多个key为更复杂的key
? - key1
- key2
: - value1
- {value2: '3'}
...
---
# 在线编译器是数据流编译,不能多个文档在线,这部分不能放进去(可以独立测试)
# 切割yaml文档,该姿势在k8s的配置文件比较常见
# 以---(三横线)开头
# 以...结束为一个yaml文档
testNestedArr2:
-
- Cat
- Dog
- Goldfish
...
编译效果
{ text: '我是测试文本',
text1: '我是测试文本1',
text2: '我会被转义\n,因为单引号会对需要转义的进行转义',
text3: '双引号则忽略需要转义的,nt',
text4: '这是多行文本 换行的需要空格缩进, 你可以试试',
text5: '这种多行文本可读性比较强n类似数组,整齐排列nn# 也支持+-,同样是控制换行符n',
text6: '这是折叠换行的姿势 会在最后一行末尾保留换行符 试试不就知道了n',
isEmpty: null,
isEmpty2: null,
date: Wed Jul 15 2020 08:00:00 GMT+0800 (中国标准时间),
language: [ 'c', 'c++' ],
hight_language: [ 'python', 'java' ],
testNestedArr1: [ [ 1, 2, 3 ], [ 4, 5, 6 ] ],
testNestedArr2: [ [ 'Cat', 'Dog', 'Goldfish' ] ],
asiaHuman: { eye: 'black', skin: 'yellow' },
europeHuman: [ { eye: 'blue' }, { skin: 'white' } ],
arrayMap: [ { key: 1 }, { test: 'fsadfas' } ],
human: { foot: true, hand: true, head: true, body: true },
asiaMan: { skin: 'yellow', foot: true, hand: true, head: true, body: true },
otherDesc: [ { strong: true } ],
skill:
{ skin: 'yellow',
foot: true,
hand: true,
head: true,
body: true,
strong: true,
it: 'very good' },
needStr: '0.01',
needBoolean: false,
needBoolean2: true,
needSeq: [ 1, 2, 2, 3 ],
needFloat: 666.6,
'key1,key2': [ 'value1', { value2: '3' } ] }
在线测试地址
基于JS-YARML : nodeca.github.io/js-yaml/
官方提案
yaml一直在更新,包括更复杂的姿势 具体骚的程度看不同语言实现的支持程度! 有兴趣的点击下面的传送门: yaml.org/
- bash魔法堂:History用法详解
- 大众点评cat系统的搭建笔记
- 我们只能在安全和隐私之间寻求平衡吗?
- Docker Compose 1.18.0 之服务编排详解
- 让IE7/8使用CSS中first-child和last-child样式属性
- dubbo/dubbox 增加原生thrift及avro支持
- Hadoop(十四)MapReduce原理分析
- dubbox 增加google-gprc/protobuf支持
- 统计02:怎样描绘数据
- ActiveMQ笔记(1):编译、安装、示例代码
- centos ssh终端下高亮显示git分支名
- Django ORM模型:想说爱你不容易
- IE7下元素的 'padding-top' 遇到 'clear' 特性在某些情况下复制到 'padding-bottom'
- IE7下元素的 'padding-top' 遇到 'clear' 特性在某些情况下复制到 'padding-bottom'
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [打造自己的监控系统]使用Django批量监控Oracle长会话
- C# ref实例讲解
- [Oracle 故障处理]记一次undo表空间使用率99%的问题
- C# 队列(Queue)
- 记住没:永远不要在 MySQL 中使用 UTF-8!
- C#多线程委托ParameterizedThreadStart应用
- [Python爬虫]使用Selenium操作浏览器订购火车票
- IDEA多线程调试
- 为什么wait和notify方法要在同步块中调用?
- 一文说清楚Mysql Innodb的B+树索引原理及其推理过程
- [Oracle数据泵全解析]expdp交互式命令行模式命令
- SpringBoot Feign文件上传
- Docker_000
- 如何应对面试官的JVM调优问题
- Docker_001