当前位置: 首页 > 教程 > YAML >

YAML流程

精华
小牛编辑
148浏览
2023-03-14

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/

可以看到解析的输出,如下所示 -