YAML遵循流程的標(biāo)準(zhǔn)程序。YAML中的本機(jī)數(shù)據(jù)結(jié)構(gòu)包括簡單表示,例如:節(jié)點。 它也稱為表示節(jié)點圖。
它包括映射,序列和標(biāo)量,正在序列化以創(chuàng)建序列化樹。通過序列化,對象將使用字節(jié)流進(jìn)行轉(zhuǎn)換。
序列化事件樹有助于創(chuàng)建字符流的表示,反向過程將字節(jié)流解析為序列化事件樹。 之后節(jié)點將轉(zhuǎn)換為節(jié)點圖。之后在YAML本機(jī)數(shù)據(jù)結(jié)構(gòu)中轉(zhuǎn)換這些值。 如下圖解釋 -
YAML中的信息以兩種方式使用:機(jī)器處理和人類消費(fèi)。 YAML中的處理器用作在上面給出的圖中的互補(bǔ)視圖之間轉(zhuǎn)換信息的過程的工具。本章介紹YAML處理器在給定應(yīng)用程序中必須提供的信息結(jié)構(gòu)。
YAML包括用于以串行格式表示數(shù)據(jù)對象的序列化過程。YAML信息的處理包括三個階段:表示,序列化,表示和解析。 接下來將詳細(xì)討論它們。
YAML表示使用三種節(jié)點的數(shù)據(jù)結(jié)構(gòu):序列,映射和標(biāo)量。
序列序列是指有序的條目數(shù),它映射鍵值對的無序關(guān)聯(lián)。它對應(yīng)于Perl或Python數(shù)組列表。
下面顯示的代碼是序列表示的一個例子 -
product:
- sku : BL394D
quantity : 4
description : Football
price : 450.00
- sku : BL4438H
quantity : 1
description : Super Hoop
price : 2392.00
映射另一方面,映射表示字典數(shù)據(jù)結(jié)構(gòu)或哈希表。 下面提到了一個例子 -
batchLimit: 1000
threadCountLimit: 2
key: value
keyMapping: <What goes here?>
標(biāo)量標(biāo)量表示字符串,整數(shù),日期和原子數(shù)據(jù)類型的標(biāo)準(zhǔn)值。 請注意,YAML還包括指定數(shù)據(jù)類型結(jié)構(gòu)的節(jié)點。
YAML中需要序列化過程,以簡化人性友好的鍵序和錨名稱。 序列化的結(jié)果是YAML序列化樹。 可以遍歷它以產(chǎn)生一系列YAML數(shù)據(jù)的事件調(diào)用。
以下是序列化的一個例子 -
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處理器包括用于創(chuàng)建流,處理縮進(jìn)和格式化內(nèi)容的各種演示細(xì)節(jié)。 這個完整的過程由用戶的偏好指導(dǎo)。
YAML表示過程的一個示例是創(chuàng)建JSON值的結(jié)果。 請遵守下面給出的代碼以便更好地理解 -
{
"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"
]
}
}
}
}
}
解析是呈現(xiàn)的逆過程; 它包含一個字符流并創(chuàng)建一系列事件。 它會丟棄導(dǎo)致序列化事件的演示過程中引入的詳細(xì)信息。 由于輸入不良,解析過程可能會失敗。 它基本上是一個檢查YAML是否格式良好的程序。
考慮下面提到的YAML示例 -
---
environment: production
classes:
nfs::server:
exports:
- /srv/share1
- /srv/share3
parameters:
paramter1
使用三個連字符,它表示文檔的開頭,后面定義了各種屬性。
YAML lint是YAML的在線解析器,有助于解析YAML結(jié)構(gòu)以檢查它是否有效。
YAML lint的官方鏈接如下:http://www.yamllint.com/
可以看到解析的輸出,如下所示 -
更多建議: