YAML遵循流程的標準程式。YAML中的本機資料結構包括簡單表示,例如:節點。 它也稱為表示節點圖。
它包括對映,序列和標量,正在序列化以建立序列化樹。通過序列化,物件將使用位元組流進行轉換。
序列化事件樹有助於建立字元流的表示,反向過程將位元組流解析為序列化事件樹。 之後節點將轉換為節點圖。之後在YAML本機資料結構中轉換這些值。 如下圖解釋 -
YAML中的資訊以兩種方式使用:機器處理和人類消費。 YAML中的處理器用作在上面給出的圖中的互補檢視之間轉換資訊的過程的工具。本章介紹YAML處理器在給定應用程式中必須提供的資訊結構。
YAML包括用於以序列格式表示資料物件的序列化過程。YAML資訊的處理包括三個階段:表示,序列化,表示和解析。 接下來將詳細討論它們。
YAML表示使用三種節點的資料結構:序列,對映和標量。
序列
序列是指有序的條目數,它對映鍵值對的無序關聯。它對應於Perl或Python陣列列表。
下面顯示的程式碼是序列表示的一個例子 -
product:
- sku : BL394D
quantity : 4
description : Football
price : 450.00
- sku : BL4438H
quantity : 1
description : Super Hoop
price : 2392.00
對映
另一方面,對映表示字典資料結構或雜湊表。 下面提到了一個例子 -
batchLimit: 1000
threadCountLimit: 2
key: value
keyMapping: <What goes here?>
標量
標量表示字串,整數,日期和原子資料型別的標準值。 請注意,YAML還包括指定資料型別結構的節點。
YAML中需要序列化過程,以簡化人性友好的鍵序和錨名稱。 序列化的結果是YAML序列化樹。 可以遍歷它以產生一系列YAML資料的事件呼叫。
以下是序列化的一個例子 -
consumer:
class: 'AppBundle\Entity\consumer'
attributes:
filters: ['customer.search', 'customer.order', 'customer.boolean']
collectionOperations:
get:
method: 'GET'
normalization_context:
groups: ['customer_list']
itemOperations:
get:
method: 'GET'
normalization_context:
groups: ['customer_get']
YAML序列化的最終輸出稱為表示。它以人類友好的方式表示字元流。 YAML處理器包括用於建立流,處理縮排和格式化內容的各種演示細節。 這個完整的過程由使用者的偏好指導。
YAML表示過程的一個範例是建立JSON值的結果。 請遵守下面給出的程式碼以便更好地理解 -
{
"consumer": {
"class": "AppBundle\\Entity\\consumer",
"attributes": {
"filters": [
"customer.search",
"customer.order",
"customer.boolean"
]
},
"collectionOperations": {
"get": {
"method": "GET",
"normalization_context": {
"groups": [
"customer_list"
]
}
}
},
"itemOperations": {
"get": {
"method": "GET",
"normalization_context": {
"groups": [
"customer_get"
]
}
}
}
}
}
解析是呈現的逆過程; 它包含一個字元流並建立一系列事件。 它會丟棄導致序列化事件的演示過程中引入的詳細資訊。 由於輸入不良,解析過程可能會失敗。 它基本上是一個檢查YAML是否格式良好的程式。
考慮下面提到的YAML範例 -
---
environment: production
classes:
nfs::server:
exports:
- /srv/share1
- /srv/share3
parameters:
paramter1
使用三個連字元,它表示文件的開頭,後面定義了各種屬性。
YAML lint是YAML的線上解析器,有助於解析YAML結構以檢查它是否有效。 YAML lint的官方連結如下:http://www.yamllint.com/
可以看到解析的輸出,如下所示 -