YAML简单用法

目录

1 YAML 简单介绍

2 YAML基本语法

3 YAML 组织结构

4 YAML数据类型

5 YAML 对象

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

5.2 使用"{}"表示一个键值表

5.3 "? " 问号+空格表示复杂的键

6  YAML数组

7 YAML复合结构

8 YAML纯量

9 YAML特殊用法

9.1 一般用!!(双叹号)做类型转换

9.2 多行字符串可以使用|保留换行符,也可以使用>折叠换行。

9.3  +表示保留文字块末尾的换行,-表示删除字符串末尾的换行。

9.4 布尔值用true和false表示。

10 锚点&和别名*,可以用来引用,定义数据的复用

11 参考链接:


1 YAML 简单介绍

        YAML,即YAML Ain’t Markup Language的缩写,YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。
        yaml文件其实也是一种配置文件类型,相比较ini,conf配置文件来说,更加的简洁,操作也更加简单,同时可以存放不同类型的数据,不会改变原有数据类型,所有的数据类型在读取时都会原样输出,yaml文件依赖python的第三方库PyYaml模块
        YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。
        YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。YAML 的配置文件后缀为 .yml,如:runoob.yml 。

yaml在线转换JavaScript

http://nodeca.github.io/js-yaml/

2 YAML基本语法

  • 大小写敏感
  • 使用缩进表示层级关系
  • 禁止使用tab缩进,只能使用空格键
  • 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
  • 使用#表示注释
  • 字符串可以不用引号标注

3 YAML 组织结构

YAML 文件可以由一或多个文档组成(也即相对独立的组织结构组成),文档间使用“---”(三个横线)在每文档开始作为分隔符。同时,文档也可以使用“...”(三个点号)作为结束符(可选)。如果只是单个文档,分隔符“---”可省略。

4 YAML数据类型

YAML 支持的数据结构有三种:

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 纯量(scalars):单个的、不可再分的值

5 YAML 对象

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

对象键值对使用冒号结构表示 key: value,冒号后面要加一个空格。

也可以使用 key: {key1: value1, key2: value2, ...}。

还可以使用缩进表示层级关系;

key: 
    child-key: value
    child-key2: value2

5.2 使用"{}"表示一个键值表

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

5.3 "? " 问号+空格表示复杂的键

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

 # 使用一个列表作为键
 ? [blue, reg, green]: Color
 # 等价于
 ? - blue
   - reg
   - gree
 : Color

6  YAML数组

使用一个短横线加一个空格代表一个数组项:

hobby:
    - Java
    - LOL

当然也可以有这样的写法:

-
  - Java
  - LOL

可以简单理解为:

[ [ 'Java', 'LOL' ] ]

数组的理解:

PaymentDetail:
  - billPaymentNo: "201904171022507929513877465876"
  - paymentAmount: 1000.00
  - paymentMethod1: "ODD"
  - paymentSuccessDate: 2019-04-17 13:00:00

转为 JavaScript 如下:

{ PaymentDetail: null,
  '  - billPaymentNo': '201904171022507929513877465876',
  '  - paymentAmount': 1000,
  '  - paymentMethod1': 'ODD',
  '  - paymentSuccessDate': Wed Apr 17 2019 21:00:00 GMT+0800 (中国标准时间) }

理解为:PaymentDetail值为一个列表,列表中有四个元素,其中每个元素都是一个字典,每个字典中只有一个键值对

PaymentDetail1:
  - billPaymentNo: "201904171022507929513877465876"
    paymentAmount: 1000.00
    paymentMethod1: "ODD"
    paymentSuccessDate: 2019-04-17 13:00:00

转为 JavaScript 如下:

{ PaymentDetail1: null,
  '  - billPaymentNo': '201904171022507929513877465876',
  '    paymentAmount': 1000,
  '    paymentMethod1': 'ODD',
  '    paymentSuccessDate': Wed Apr 17 2019 21:00:00 GMT+0800 (中国标准时间) }

理解为:PaymentDetail1值为一个列表,列表中只有一个元素,该元素为一个字典,字典由多个键值对构成

7 YAML复合结构

对象和数组可以结合使用,形成复合结构。

languages:
    - Ruby
    - Perl
    - Python
websites:
  YAML: yaml.org
  Ruby: ruby-lang.org
  Python: python.org
  Perl: use.perl.org

转为 JavaScript 如下:

{ languages: [ 'Ruby', 'Perl', 'Python' ],
  websites: null,
  '  YAML': 'yaml.org',
  '  Ruby': 'ruby-lang.org',
  '  Python': 'python.org',
  '  Perl': 'use.perl.org' }

8 YAML纯量

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

9 YAML特殊用法

9.1 一般用!!(双叹号)做类型转换

string:
    - !!str 54321
    - !!str true

转为 JavaScript 如下:

{ string: [ '54321', 'true' ] }

9.2 多行字符串可以使用|保留换行符,也可以使用>折叠换行。

this: |
  Foo
  Bar
that: |
  Foo
  Bar

转为 JavaScript 代码如下:

{ this: 'Foo\nBar\n', that: 'Foo\nBar\n' }

9.3  +表示保留文字块末尾的换行,-表示删除字符串末尾的换行。

s1: |
  Foo
s2: |+
  Foo 
s3: |-
  Foo

转为 JavaScript 代码如下:

{ s1: 'Foo\n', s2: 'Foo \n', s3: 'Foo' }

9.4 布尔值用true和false表示。

NULL用~表示

10 锚点&和别名*,可以用来引用,定义数据的复用

第一步:使用 “&” 定义数据锚点(即要复制的数据)

第二步:使用 “*” 引用上述锚点数据(即数据的复制目的地)

defaults: &defaults
   adapter:  postgres
   host:     localhost 
development:
   database: myapp_development
   <<: *defaults
test:
  database: myapp_test
  <<: *defaults

等同于下面的代码:

defaults:
   adapter:  postgres
   host:     localhost
development:
   database: myapp_development
   adapter:  postgres
   host:     localhost
test:
  database: myapp_test
  adapter:  postgres
  host:     localhost

&用来建立锚点(defaults),<<表示合并到当前数据,*用来引用锚点。

11 参考链接:

https://www.runoob.com/w3cnote/yaml-intro.html

https://www.cnblogs.com/pandaly/p/10321464.html

发布了51 篇原创文章 · 获赞 55 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/huohongpeng/article/details/105551920
今日推荐