美文网首页
Yaml简单语法和错误例子

Yaml简单语法和错误例子

作者: 大雄good | 来源:发表于2018-11-24 18:42 被阅读0次

在学习Kubernetes的时候经常需要阅读和修改yaml文件,所以我就简单整理一下yaml的基本用法,花十分钟看完,并且简单在线改改这里给出的用例做下实验,基本上就掌握yaml了。

Yaml的简单语法

YAML(发音 /ˈjæməl/中文感觉更像是"叶某or鸭某"),基本语法规则:

  • 大小写敏感
  • 缩进表层级关系(同样个数的空格算相同层级)
  • : 后面一定要加一个空格
  • #表注释

好用的Node Anchor

我不知道这个功能中文叫什么,举例用用,大家就知道有多好用了。Node Archor给我感觉就是一个宏定义,并且不能用于{}嵌套。

yaml:

Node Anchor:
  a: &name hello
  b: *name 
  c: {nameis: *name} #不能{}嵌套
  d: 
    a:
      b: *name

json:

    "Node Anchor": {
        "a": "hello",
        "b": "hello",
        "c": {
            "nameis": "*name"
        },
        "d": {
            "a": {
                "b": "hello"
            }
        }
    },

数据类型

下面简单给出一些例子,介绍了基本的数据类型和使用方法。
在线yaml2json工具,所有用例

String

string:
  a: "true"
  b: true123
  c: 123, 11

对应json:

    "string": {
        "a": "true",
        "b": "true123",
        "c": "123, 11"
    },

Boolean

boolean:
  a: False 
  b: TRUE
  c: faLse # true和false不区分大小写都会被识别为true和false

对应json:

    "boolean": {
        "a": false,
        "b": true,
        "c": false
    },

Number

number:
  a: 0x10 #16进制
  b: 012 #8进制
  c: 0812 # 8进制
  d: 1,2 # 不知道为什么可以且只能加一个,
  e: 3.4 # 浮点数
  f: 0b11 # 二进制不支持,结果都是0

对应json:

    "number": {
        "a": 16,
        "b": 10,
        "c": 10,
        "d": 12,
        "e": 3.4,
        "f": 0
    },

Boolean

null: 
  a: ~
  b: 
  c: null

对应json:

    "null": {
        "a": null,
        "b": null,
        "c": null
    },

List

list:
  a: [a: 1, b: 2, c: 3] #这种写法不会把list里面的元素当做key/value, 而是string
  b: [{a: 1}, {b: 2}, {c: 3}]
  c:
    - a: 1
    - b: 2
    - c: 3

对应json:

    "list": {
        "a": [
            "a: 1",
            "b: 2",
            "c: 3"
        ],
        "b": [
            {
                "a": 1
            },
            {
                "b": 2
            },
            {
                "c": 3
            }
        ],
        "c": [
            {
                "a": 1
            },
            {
                "b": 2
            },
            {
                "c": 3
            }
        ]
    },

Hash

a,b 效果相同,d,e效果相同

hash:
  a: {a: 1, b: 2, c: 3}
  b: 
    a: 1,
    b: 2,
    c: 3
  c:
    a: b: c: 3
  d: 
    a: {b: {c: 3}}
  e:
    a:
      b:
        c: 3

对应json:

    "hash": {
        "a": {
            "a": 1,
            "b": 2,
            "c": 3
        },
        "b": {
            "a": 1,
            "b": 2,
            "c": 3
        },
        "c": {
            "a": "b: c: 3"
        },
        "d": {
            "a": {
                "b": {
                    "c": 3
                }
            }
        },
        "e": {
            "a": {
                "b": {
                    "c": 3
                }
            }
        }
    }

总结

通过对比yaml和json的结果,其实可以看出来yaml相对于json可读性更好,并且行数更少,敲的字符更少(感觉这才是重点啊!!)。

相关文章

网友评论

      本文标题:Yaml简单语法和错误例子

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