YAML 語法淺析

YAML簡介:

YAML是YAML不是一種標記語的外語縮寫;但爲了強調這種語言以數據做爲中心,而不是以置標語言爲重點,而用返璞詞重新命名。它是一種直觀的能夠被電腦識別的數據序列化格式,是一個可讀性高並且容易被人類閱讀,容易和腳本語言交互,用來表達資料序列的編程語言。

在線編輯器,可以將YAML 轉換爲JSON 或Python 的output。

語法特性

1,使用縮進來表示層級關係, 且禁止使用tab 來縮進, 只可以使用空格。

2,大小寫敏感。

3,縮進長度可以爲任意長度,但是同一層級的元素必須對齊。

4,#來表示註釋行的開始。

5,字符串不需要引號標註

6, 冒號和後面的value 必須有至少一個空格

基本語法

1,LIST, 數組。YAML使用 連字符(-) , 連字符後面必須加空格表示:

#YAML
- cat
- dog
- elephant
#或者寫在一行
[cat,dog,elephant]

#JSON
[
  "cat", 
  "dog", 
  "elephant"
]


#Python
['cat', 'dog', 'elephant']

2, MAP, YAML使用冒號(注意空格的使用), 來表示key-value。

#YAML
name: tiefanhe
age: 22
#JSON
{
  "age": 22, 
  "name": "tiefanhe"
}
#Python
{'age': 22, 'name': 'tiefanhe'}

3, scalar, 最小的數據單位,不可分割

數據結構的組合嵌套

1, LIST 嵌套LIST

#YAML 表示法1
-
 - apple
 - banana
 - orange
-
 - cat
 - dog
 - elephant

#YAML 表示法2
- - apple
  - banana
  - orange
- - cat
  - dog
  - elephant

#JSON
[
  [
    "apple", 
    "banana", 
    "orange"
  ], 
  [
    "cat", 
    "dog", 
    "elephant"
  ]
]
#Python
[['apple', 'banana', 'orange'], ['cat', 'dog', 'elephant']]

2,LIST 嵌套MAP

#YAML 表示1
-
 name: tie fanhe
 age: 22
-
 name: san zhang
 age: 23

#YAML 表示2
- name: tie fanhe
  age: 22
- name: san zhang
  age: 23
#JSON
[
  {
    "age": 22, 
    "name": "tie fanhe"
  }, 
  {
    "age": 23, 
    "name": "san zhang"
  }
]

#Python
[{'age': 22, 'name': 'tie fanhe'}, {'age': 23, 'name': 'san zhang'}]

3, MAP 嵌套LIST

#YAML 表示
Animal:
 - cat
 - dog

Fruit:
 - apple
 - banana
#JSON
{
  "Fruit": [
    "apple", 
    "banana"
  ], 
  "Animal": [
    "cat", 
    "dog"
  ]
}

#Python
{'Animal': ['cat', 'dog'], 'Fruit': ['apple', 'banana']}

4, MAP 嵌套MAP

#YAML 表示
Student1:
 name: tie fanhe
 age: 22

Student2:
 name: san zhang
 age: 23
#JSON
{
  "Student2": {
    "age": 23, 
    "name": "san zhang"
  }, 
  "Student1": {
    "age": 22, 
    "name": "tie fanhe"
  }
}
#Python
{'Student1': {'age': 22, 'name': 'tie fanhe'},
 'Student2': {'age': 23, 'name': 'san zhang'}}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章