YAML – 流程

YAML – 流程

YAML 遵循一种标准的流程。在 YAML 中,原生数据结构包括了如节点等简单表示。它也被称为 Representation Node Graph。

它包括映射、序列和标量量,这些被序列化用来创建一个序列化树。随着序列化,对象会被转化为一连串的字节。

序列化事件树有助于创建字符流的表示方式,如下图所示。

反向过程将一连串的字节解析为序列化事件树。之后,节点被转换为节点图。这些值随之被转化为 YAML 原生数据结构。下图说明了它的过程。

YAML - 流程

YAML 中的信息有两种用法:机器处理人类使用。在 YAML 中,处理器被用作在上面的图表中,在互补视图之间转换信息的过程中的工具。本章介绍了一种 YAML 处理器必须在给定应用程序中提供的信息结构。

YAML 包括了一种序列化过程,用于以序列的格式表示数据对象。处理 YAML 信息包括三个阶段:表示,序列化,展示和解析。让我们详细讨论其中的每一部分。

表示

YAML 使用三种节点来表示数据结构:序列、映射标量

序列

序列是指一系列的条目,它映射了一个无序关键词值对的关联。它对应于 PerlPython 数组列表。

以下是一个序列表示的示例代码:

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 数据的事件调用。

以下是序列化的示例:

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 - 流程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程