http://www.yamllint.com/
YAML 是YAML Ain’t Markup Language
(YAML不是一种标记语言)的缩写(又玩起了递归的游戏…)。读音是yamel
(雅梅尔)或/ˈjæməl/
它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。
YAML 的用途广泛,用于配置文件,日志文件,跨语言数据共享,对象持久化,复杂的数据结构等。
1、大小写敏感
2、使用缩进表示层级关系
3、禁止使用tab
缩进,只能使用空格键
4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
5、使用#
表示注释
6、字符串可以不用引号“”
标注
YAML 一共有三种数据结构
使用冒号(:)表示键值对,同一缩进的所有键值对属于一个 map
# YAML表示
age: 12
name: huang
# 对应的Json表示
{'age':12, 'name':'huang'}
写法二:
# YAML表示
{age:12, name:huang}
# 对应的Json表示
{'age':12, 'name':'huang'}
使用连字符(-)表示:
# YAML表示
- a
- b
- 12
# 对应Json表示
['a','b',12]
写法二:
# YAML表示
[a,b,c]
# 对应Json表示
[ 'a', 'b', 'c' ]
纯量是最基本的、不可再分的值。以下数据类型都属于 JavaScript 的纯量。
字符串是最常见,也是最复杂的一种数据类型。
字符串默认不使用引号表示。
str: 这是一行字符串
如果字符串之中包含空格或特殊字符,需要放在引号之中。
str: '内容: 字符串'
单引号和双引号都可以使用,双引号不会对特殊字符转义。
s1: '内容\n字符串'
s2: "内容\n字符串"
单引号之中如果还有单引号,必须连续使用两个单引号转义。
str: 'labor''s day'
字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格。
str: 这是一段
多行
字符串
多行字符串可以使用|
保留换行符,也可以使用>
折叠换行。
this: |
Foo
Bar
that: >
Foo
Bar
转为 JavaScript 代码如下。
{ this: 'Foo\nBar\n', that: 'Foo Bar\n' }
+表示保留文字块末尾的换行,-表示删除字符串末尾的换行。
s1: |
Foo
s2: |+
Foo
s3: |-
Foo
转为 JavaScript 代码如下。
{ s1: 'Foo\n', s2: 'Foo\n\n\n', s3: 'Foo' }
字符串之中可以插入 HTML 标记。
message: |
: red">
段落
>
转为 JavaScript 如下。
{ message: '\n\n 段落\n
\n' }
数值直接以字面量的形式表示。
number: 12.30
布尔值用true和false表示。
isSet: true
null用~表示。
parent: ~
时间采用 ISO8601 格式。
iso8601: 2001-12-14t21:59:43.10-05:00
日期采用复合 iso8601 格式的年、月、日表示。
date: 1976-07-31
YAML 允许使用两个感叹号,强制转换数据类型。
e: !!str 123
f: !!str true
# 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' } }
# YAML表示
languages:
- Ruby
- Perl
- Python
- c
# 对应Json表示
{ languages: [ 'Ruby', 'Perl', 'Python', 'c' ] }
# 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]
# YAML表示
-
id: 1
name: huang
-
id: 2
name: liao
# 对应Json表示
[ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } ]
Python 中,一般使用 PyYAML 模块操作 YAML。
pip install pyyaml
具体用法点这里
[1] https://blog.csdn.net/vincent_hbl/article/details/75411243
[2] http://www.ruanyifeng.com/blog/2016/07/yaml.html