欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

YAML入门

程序员文章站 2023-12-30 18:34:28
...

前言

最近作者在学习Spring Boot时,看到可以用一门新的语言去编写相关的配置文件,这就是本篇博客要说明的YAML(文章的大部分资料来源于百度百科)。

YAML简介

YAML(/ˈjæməl/,尾音类似 camel ) 是“YAML不是一种标记语言”的外语缩写 (见前方参考资料原文内容);但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。
它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。

YAML特性

  • YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表,标量等资料形态
  • 它使用空白符号缩排和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)
  • 尽管它比较适合用来表达阶层式(hierarchical model)的数据结构,不过也有精致的语法可以表示关联性(relational model)的资料
  • 由于YAML使用空白字符和分行来分隔资料,使得它他特别适合用grep、Python、Perl、Ruby操作
  • 其让人最容易上手的特色是巧妙避开各种封闭符号,如:引号、各种括号等,这些符号在嵌套结构中会变得复杂而难以辨认

YAML适用场景

  • 脚本语言
    由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript,Go 。除了Java 和 Go,其他都是脚本语言。
  • 序列化
    YAML比较适合做序列化。因为它是宿主语言数据类型直转的。
  • 配置文件
    YAML做配置文件也不错。写YAML要比写XML快得多(无需关注标签或引号),并且比ini文档功能更强。
    比如Ruby on Rails的配置就选用的YAML。对ROR而言,这很自然,也很省事。
    由于兼容性问题,不同语言间的数据流转建议不要用YAML

YAML语法

基础语法:

K:(空格)v

字面量:普通的值 [ 数字,布尔值,字符串 ]
字面量直接写在后面就可以,字符串默认不用加上双引号或者单引号;
以此来表示一对键值对(空格不能省略);以空格不是TAB!)的缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
注意 :属性和值的大小写都是十分敏感的。例子:

server:
 port: 8081
 path: /hello

进阶语法

  1. 对象、Map(键值对)

    k: 
     v1:
     v2:
    

    在下一行来写对象的属性和值的关系,注意缩进,例如:

    student:
     name: abc
     age: 3
    

    或者用行内的写法来表示:

    student: {name: abc,age: 3}
    
  2. 数组(List、Set)
    用 - 值表示数组中的一个元素,比如:

    pets:
     - cat
     - dog
     - pig
    

    或者用行内的写法来表示:

    pets: [cat,dog,pig]
    

YAML和XML的区别

以前的配置文件,大多数都是使用xml来配置;比如一个简单的端口配置,以下就是yaml和xml的区别:

  • yaml配置:
server:
    prot: 8080
  • xml配置:
<server>
    <port>8081<port>
</server>
相关标签: YAML

上一篇:

下一篇: