1.大小写敏感
2.使用缩进表示层级关系
3.禁止使用tab缩进,只是用空格缩进
4.缩进长度没有限制,只要元素对齐就代表一个层级
5.使用#表示注释
6.字符串可以不用引号标注
下面是ymal语法对应的json
字符串:
#ymal
str:abc
str:'字符串'
#单双引号均可,双引号不会对特殊符号转义
s1: '内容\n字符串'
s2: "内容\n字符串"
#JSON
{
str:'abc'
str:'字符串'
s1: '内容\\n字符串'
s2: "内容\n字符串"
}
布尔值:
#ymal
isTrue: true
isTrue: false
#JSON
{
isTrue: true,
isTrue: false
}
数值:
#ymal
int:20
float:2.13
double:3.24
#JSON
{
int:20,
float:2.13,
double:3.24
}
NULL值
#ymal
#null值用~表示
student:~
#JSON
{
student:null
}
时间格式:
#ymal
#使用ISO8601格式表示
iso8601:2018-05-20t10:59:43.10-05:00
#JSON
{
iso08601:new Date('2018-05-20t10:59:43.10-05:00')
}
日期:
#ymal
#使用ISO8601格式yyyy-MM-dd表示
data:2018-05-20
#JSON
{
data:new Date('2018-05-20')
}
1.Map,散列表
使用:表示键值对,统一缩进的所有键值对属于一个Map
#ymal
name: John
age: 18
#也可以写在一行
{ name: John, age: 18}
#JSON
{
name: John,
age:18
}
2.List,数组
使用-来表示数组中的一个元素
#ymal
- a
- b
- c
#也可以写在一行
[a, b, c]
#JSON
['a','b'.'c']
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
#或者
- [Ruby,Perl,Python]
- [c,c++,java]
#JSON
[
[
'Ruby',
'Perl',
'Python'
],
[
'c',
'c++',
'java'
]
]
4.List嵌套Map
#ymal
-
name: John
age: 18
-
name: Lucy
age: 16
#JSON
[
{
'name':'John',
'age':18
},
{
'name':'Lucy',
'age':16
}
]
#这是一个ymal
name: Tom Smith
age: 37
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 25
- name1: Jenny Smith
age1: 12
#这是读取yaml的py代码,用load方法
import yaml
pip install pyyaml
http://ansible-tran.readthedocs.io/en/latest/docs/YAMLSyntax.html
"""
f = open('test.yaml')
y = yaml.load(f)
print(y)
这是结果:{‘name’: ‘Tom Smith’, ‘age’: 37, ‘spouse’: {‘name’: ‘Jane Smith’, ‘age’: 25}, ‘children’: [{‘name’: ‘Jimmy Smith’, ‘age’: 25}, {‘name1’: ‘Jenny Smith’, ‘age1’: 12}]}