YAML书写规则与数据结构

摘要:
YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。基本规则YAML有以下基本规则:1、大小写敏感2、使用缩进表示层级关系3、禁止使用tab缩进,只能使用空格键4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。字符串布尔值整数浮点数Null时间日期数值直接以字面量的形式表示。布尔值用true和false表示。

YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。

基本规则

YAML有以下基本规则:
1、大小写敏感
2、使用缩进表示层级关系
3、禁止使用tab缩进,只能使用空格键
4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
5、使用#表示注释
6、字符串可以不用引号标注

三种数据结构

1、map,散列表
使用冒号(:)表示键值对,同一缩进的所有键值对属于一个map,示例:

复制代码
# YAML表示
age : 12
name : huang

# 对应的Json表示
{'age':12,'name':'huang'}
复制代码

也可以将一个map写在一行:

# YAML表示
{age:12,name:huang}

# 对应的Json表示
{'age':12,'name':'huang'}

2、list,数组
使用连字符(-)表示:

复制代码
# YAML表示
- a
- b
- 12

# 对应Json表示
['a','b',12]
复制代码

也可以写在一行:

# YAML表示
[a,b,c]

# 对应Json表示
[ 'a', 'b', 'c' ]

3、scalar,纯量
数据最小的单位,不可以再分割。

以下数据类型都属于 JavaScript 的纯量。

  • 字符串
  • 布尔值
  • 整数
  • 浮点数
  • Null
  • 时间
  • 日期

数值直接以字面量的形式表示。

布尔值用truefalse表示。

null~表示。

时间采用 ISO8601 格式。 如:2001-12-14t21:59:43.10-05:00

日期采用复合 iso8601 格式的年、月、日表示。如:1976-07-31

参考:http://www.ruanyifeng.com/blog/2016/07/yaml.html

数据结构嵌套

map和list的元素可以是另一个map或者list或者是纯量。由此出现4种常见的数据嵌套:
1、map嵌套map

复制代码
# YAML表示
websites:
 YAML: yaml.org 
 Ruby: ruby-lang.org 
 Python: python.org 
 Perl: use.perl.org 

# 对应Json表示
{ websites: 
   { YAML: 'yaml.org',
     Ruby: 'ruby-lang.org',
     Python: 'python.org',
     Perl: 'use.perl.org' 
   }
}
复制代码

2、map嵌套list

复制代码
# YAML表示
languages:
 - Ruby
 - Perl
 - Python 
 - c

# 对应Json表示
{ languages: [ 'Ruby', 'Perl', 'Python', 'c' ] }
复制代码

3、list嵌套list

复制代码
# YAML表示
-
  - Ruby
  - Perl
  - Python 
- 
  - c
  - c++
  - java

# 对应Json表示
[ [ 'Ruby', 'Perl', 'Python' ], [ 'c', 'c++', 'java' ] ]
复制代码

还可以如下表示该结构:

复制代码
# 方法2
- - Ruby
  - Perl
  - Python 
- - c
  - c++
  - java

# 方法3
- [Ruby,Perl,Python]
- [c,c++,java]
复制代码

4、list嵌套map

复制代码
# YAML表示
-
  id: 1
  name: huang
-
  id: 2
  name: liao

# 对应Json表示
[ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } ]
复制代码
*****************************************************
*** No matter how far you go, looking back is also necessary. ***
*****************************************************

免责声明:文章转载自《YAML书写规则与数据结构》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CentOS学习:第一天基础概念——何为大小端下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python thread & process

线程 点击查看 <- 进程 点击查看 <- 线程与进程的区别 线程共享内部空间;进程内存空间独立 同一个进程的线程之间可以直接交流;两个进程之间想通信必须通过一个中间代理 创建新线程很简单,占用资源较少;创建新进程是对父进程的克隆,会占用很多资源 一个线程可以控制和操作同一进程里的其他线程;但是进程只能操作子进程 修改父线程可能会影响到进程下...

原创:python的requests.post()向后端传递数据,数组结构需将python数据结果转换成JSON

 针对采集来的数据,用requests.post()向后端传递 如果是python数据结构如数组,需要转换成为JSON对象,否则后端容易解析不成后端集合的对象结构 re 一:python做为前端请求requests.post() ''' 后台接收是数组 ''' dataInfoList = [...

Sublime Text3 python自动补全问题——Sublime Text3安装Anaconda插件

学习python的时候 在编辑器的选择上会有很多选择,我最终还是选择了sublime text3。 相对于其他编辑器,sublime text有以下特性: 插件多,类似GoSublime,Emmet信手拈来,非常顺手。 UI很漂亮,操作顺畅,无呆滞感,界面简洁有利于集中精力到代码之中。 代码地图是亮点。 强大的代码补全,自动缩进。 快捷键很好用,当初...

linux centos8 安装 composer2.0

1 安装前准备 先安装php 再安装php-json扩展 yum install php-json  参考 https://blog.csdn.net/alinathz/article/details/105885254 2 安装 官网安装方法 https://getcomposer.org/download/ php -r "copy('https:/...

php集成环境

apache+php+mysql是常见php环境,在windows下也称为WAMP,对于初学者自选版本搭建总是会遇到一些麻烦,下面是收集到的一些集成环境安装: 1.AppServ (推荐,简洁精简) 主页http://www.appservnetwork.com/ 当前的两个版本是:2.5.102.6.0(点击版本号下载) AppServ是PHP网页架站工...

Python实现 灰色关联分析 与结果可视化

之前在比赛的时候需要用Python实现灰色关联分析,从网上搜了下只有实现两个列之间的,于是我把它改写成了直接想Pandas中的计算工具直接计算person系数那样的形式,可以对整个矩阵进行运算,并给出了可视化效果,效果请见实现 灰色关联分析法 对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的...