• 语法规则

    • 大小写敏感
    • 使用缩进表示层级关系
    • 缩进时不允许使用tab键,只允许使用空格
    • 缩进的数目不重要,只需要层级相同的左边对齐即可
    • #表示注释
  • 数据结构

    • 对象:键值对的集合
    • 数组:一组有序的值
    • 纯量:单个的值,包括需要的基本数据类型
  • 对象

    • 使用冒号结果进行表示,且冒号后要加空格

      name: xxcheng

      转为JSON格式

      {"name":"xxcheng"}
    • 写法二,所有键值对写出行内对象

      user: {name: xxcheng,age: 18}

      转为JSON格式

      {"user":{"name":"xxcheng","age":18}}
  • 数组

    • 使用连词线开头组成,一个数组,连词线对齐

      - jpc
      - abc
      - xxcheng

      转为JSON格式

      ["jpc","abc","xxcheng"]

      结合对象写法

      users:
       - jpc
       - abc
       - xxcheng

      转为JSON格式

      {"users":["jpc","abc","xxcheng"]}
    • 采用行内表示法

      users: [jpc,abc,xxcheng]

      转为JSON格式

      {"user":["jpc","abc","xxcheng"]}
  • 复合结构

    对象和数组复合使用

    users:
     - abc
     - xyz
     - jpc
    websites:
     - www.baidu.com
     - www.google.com
     - www.qq.com
     - www.xxcheng.cn

    转为JSON格式

    {"users":["abc","xyz","jpc"],"websites":["www.baidu.com","www.google.com","www.qq.com","www.xxcheng.cn"]}
  • 纯量

    • 字符串

      • 默认不使用引号,但是如果出现空格或者特殊字符则需要使用引号

        单引号和双引号都可使用,双引号不会进行转义

        s1: 我没有用引号
        s2: '我是\n单引号'
        s3: "我是\n双引号"

        转为JSON格式

        {"s1":"我没有用引号","s2":"我是\\\n单引号","s3":"我是\n双引号"}
      • 如果使用单引号包裹字符串,且含有单引号,需使用两个单引号进行转义或者改用双引号

        s1: 'I''m fine.'
        s2: "I'm fine."

        转为JSON格式

        {"s1":"I'm fine.","s2":"I'm fine."}
      • 字符串允许写成多行,如果没有使用引号(不确定使用了引号是不是不需要添加空格),第二行开始必须添加一个空格,否则会报错,同时换行符会被转为空格

        str: 我是第一行
         我是第二行
         我是第三行

        转为JSON格式

        {"str":"我是第一行 我是第二行 我是第三行"}
      • 使用|保留换行符

        str: |
         我是第二行
         我是第三行

        转为JSON格式

        {"str":"我是第二行\n我是第三行\n"}
      • 使用>将换行替换为空格

        默认行为也是这样子,不过使用>最后一行有一个\n

        str: >
         我是第二行
         我是第三行

        转为JSON格式

        {"str":"我是第二行 我是第三行\n"}
      • 使用|+保留字符串末尾的换

        输出与使用|一样

        str: |+
         我是第二行
         我是第三行

        转为JSON格式

        {"str":"我是第二行\n我是第三行\n"}
      • 使用|-表示删除字符串末尾的换行

        str: |-
         我是第二行
         我是第三行

        转为JSON格式

        {"str":"我是第二行\n我是第三行"}
      • 使用>-将字符串的换行替换为空格,且删除最后一行的换行

        相当于默认情况

        str: >-
         我是第二行
         我是第三行

        转为JSON格式

        {"str":"我是第二行 我是第三行"}
      • 同时,字符串支持插入HTML

        str: |
         <p>
              <span style="color:red">Hello,xxcheng</span>
         </p>

        转为JSON格式

        {
            "str":"<p>\n \t<span style=\"color:red\">Hello,xxcheng</span>\n</p>\n"
        }
    • 布尔型

    • 整数

    • 浮点型

    • Null

      使用~表示

      name: ~

      转为JSON格式

      {"name":null}
    • 时间

    • 日期

  • 引用

    &用于建立锚点、*用于引用锚点、<<用于合并到当前数据

    defaultData: &defaultValue
     age: 18
     sex: 男
    users:
     - 
       name: jpc
       <<: *defaultValue
     -
       name: xxcheng
       <<: *defaultValue

    转为JSON格式

    {"defaultData":{"age":18,"sex":"男"},"users":[{"name":"jpc","age":18,"sex":"男"},{"name":"xxcheng","age":18,"sex":"男"}]}
  • 参考