YAML的语法和编写规范

2023-12-16 06:08:50

YAML 简介:

YAML,即 YAML Ain’t a Markup Language(YAML 不是一种标记语言)的递归缩写。YAML 其实意思是 Yet Another Markup Language(仍是一种标记语言)。它主要强度这种语言是以数据为中心,而不是以标记为中心,而像 XML 语言就使用了大量的标记。

YAML 可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类似,还可以简单表达数组、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件。

YAML语法

1.YAML使用可打印的Unicode字符,可使用UTF-8或UTF-16

2.使用空白字符(不能使用Tab)分层,同层元素左侧对齐

3.单行注解由井字号( # )开始,可以出现在行中任何位置

4.每个清单成员以单行表示,并用短杠+空白(- )起始

5.每个杂凑表的成员用冒号+空白(: )分开键和值

6.杂凑表的键值可以用问号?(?)起始,表示多个词汇组成的键值

7.字串一般不使用引号,但必要的时候可以用引号框住

8.使用双引号表示字串时,可用倒斜线(\)进行特殊字符转义

9.区块的字串用缩排和修饰词(非必要)来和其他资料分隔,有新行保留(使用符号|)或新行折叠(使用符号>)两种方式

10.在单一档案中,可用连续三个连字号(---)区分多个档案

11.可选择性的连续三个点号(...)用来表示档案结尾(在流式传输时非常???有用,不需要关闭流即可知道到达结尾处)

12.重复的内容可使从参考标记星号 (*)复制到锚点标记(&)

13.指定格式可以使用两个惊叹号 ( !! ),后面接上名称

Yaml编写规范

规范一:文档使用?Unicode?编码作为字符标准编码,例如 UTF-8

规范二:使用“#”来表示注释内容

# 客户订单

date: 2015-02-01

customer:

??- name: Jai

items:

??- no: 1234 ????????# 订单号

??- descript: cpu 

规范三:使用空格作为嵌套缩进工具。通常建议使用两个空格缩进,不建议使用 tab (甚至不支持)

规范四:序列表示

1、使用“-”(横线) + 单个空格表示单个列表项

--- # 文档开始

- 第一章 简介

- 第二章 设计目录

2、使用"[]"表示一组数据

--- # 文档开始

[blue, red, green]

3、组合表示。每个结构都可以嵌套组成复杂的表示结构

--- # 文档开始

- [blue, red, green] ????# 列表项本身也是一个列表

- [Age, Bag]

- site: {osc:www.oschina.net, baidu: www.baidu.com} ?# 这里是同 键值表 组合表示

规范五:键值表

1、使用?“:”(冒号) + 空格表示单个键值对

# 客户订单

date: 2015-02-01

customer:

??- name: Jai

items:

??- no: 1234 ????????# 订单号

??- descript: cpu

??- price: ¥800.00

2、使用"{}"表示一个键值表

# 客户订单

date: 2015-02-01

customer:

??- name: Jai

items: {no: 1234, descript: cpu, price: ¥800.00}

3、"? " 问号+空格表示复杂的键。当键是一个列表或键值表时,就需要使用本符号来标记

?# 使用一个列表作为键

?? [blue, reg, green]: Color

?# 等价于

?? - blue

???- reg

???- gree

?: Color

4、组合表示。每个结构都可以嵌套组成复杂的表示结构

Color:

????- blue

????- red

????- green

?

?# 相当于 (也是 JSON 的表示)

?{Color: [blue, red, green]}

?div:

????- border: {color: red, width: 2px}

????- background: {color: green}

????- padding: [0, 10px, 0, 10px]

?# 使用缩进表示的键值表与列表项

?items:

????- item: cpu

??????model: i3

??????price: ¥800.00

????- item: HD

??????model: WD

??????price: ¥450.00

?# 上面使用 “-” 前导与缩进来表示多个列表项,相当于下面的JSON表示

?items: [{item:cpu, model:i3, price:¥800.00}, {item:HD, model:WD, price: ¥450.00}]

文章来源:https://blog.csdn.net/2301_77296775/article/details/130761892
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。