美文网首页
YAML语法学习

YAML语法学习

作者: 小鬼客 | 来源:发表于2019-01-19 15:16 被阅读0次

    1.简介

    YAML=YAML Ain't Markup Language,YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。多用于api接口的定义。

    2.基本规则

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

    3. YAML支持的数据结构

    对象:键值对的集合,又称为映射(map)/ 哈希(hashes) / 字典(dictionary)

    使用冒号(:)表示键值对,同一缩进的所有键值对属于一个map,示例:
    # YAML表示
    age : 12
    name : huang
     
    # 对应的Json表示
    {'age':12,'name':'huang'}
    

    数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

    使用连字符(-)表示:
    # YAML表示
    - a
    - b
    - 12
    # 对应Json表示
    ['a','b',12]
    

    纯量(scalars):单个的、不可再分的值

    4.数据的嵌套

    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
    # 对应Json表示
    [ [ 'Ruby', 'Perl', 'Python' ], [ 'c', 'c++', 'java' ] ]
    

    4.list 嵌套map

    # YAML表示
    -
      id: 1
      name: huang
    -
      id: 2
      name: liao
     
    # 对应Json表示
    [ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } ]
    

    5.其他

    1.引号

    单引号: 会将字符串里面的特殊字符转义为字符串处理

    name: '123\n123'
    输出: 123\n123
    

    双引号: 不会转义字符串里面的特殊字符,特殊字符作为本身想表示的意思。

    name: "123\n123" 
    输出: 123 换行 123
    
    2.文本块

    |:使用|标注的文本内容缩进表示的块,可以保留块中已有的回车换行

    value: |
       hello
       world!
    输出:hello 换行 world!
    

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

    value: |
    hello
    
    value: |-
    hello
    
    value: |+
    hello
    输出:hello\n hello hello\n\n(有多少个回车就有多少个\n)
    

    :使用 > 标注的文本内容缩进表示的块,将块中回车替换为空格,最终连接成一行

    value: > hello
    world!
    输出:hello 空格 world!
    注意 “>” 与 文本之间的空格
    
    3.锚点与引用

    使用 & 定义数据锚点(即要复制的数据),使用 * 引用锚点数据(即数据的复制目的地)

    name: &a yaml
    book: *a
    books: 
       - java
       - *a
       - python
    输出book: yaml 
    输出books:[java,yaml,python]
    注意*引用部分不能追加内容
    
    4.存量,数据类型约定

    1.字符串
    使用”或”“或不使用引号
    2.布尔值
    true或false表示。
    3.数字

    12 #整数 
    014 # 八进制整数 
    0xC #十六进制整数 
    13.4 #浮点数 
    1.2e+34 #指数 
    .inf空值 #无穷大
    

    4.空值
    null或~表示
    5.日期
    使用 iso-8601 标准表示日期

    date: 2018-01-01t16:59:43.10-05:00
    在springboot中yaml文件的时间格式 date: yyyy/MM/dd HH:mm:ss
    

    6.强制类型转换
    YAML 允许使用个感叹号!,强制转换数据类型,单叹号通常是自定义类型,双叹号是内置类型。

    money: !!str
    123
    date: !Boolean
    true
    内置类型:
    !!int # 整数类型 
    !!float # 浮点类型 
    !!bool # 布尔类型 
    !!str # 字符串类型 
    !!binary # 也是字符串类型 
    !!timestamp # 日期时间类型 
    !!null # 空值 
    !!set # 集合 
    !!omap,!!pairs # 键值列表或对象列表
    !!seq # 序列,也是列表 !!map # 键值表
    

    相关文章

      网友评论

          本文标题:YAML语法学习

          本文链接:https://www.haomeiwen.com/subject/ymqzdqtx.html