YAML - 流程



YAML遵循標準流程來處理流程。YAML中的原生資料結構包括簡單的表示,例如節點。它也稱為表示節點圖。

它包括對映、序列和標量量,這些量被序列化以建立序列化樹。透過序列化,物件被轉換為位元組流。

序列化事件樹有助於建立字元流的表示,如下所示。

反向過程將位元組流解析為序列化事件樹。之後,節點被轉換為節點圖。這些值隨後被轉換為YAML原生資料結構。下圖解釋了這一點:

YAML Processes

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還包含指定資料型別結構的節點。有關標量的更多資訊,請參閱本教程的第6章。

序列化

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/

您可以看到如下所示的解析輸出:

YAML Lint
廣告
© . All rights reserved.