为什么---(3个破折号/连字符)在yaml文件中?

时间:2018-06-10 21:37:36

标签: yaml

所以我刚开始使用YAML文件而不是application.properties,因为它更具可读性。我在YAML文件中看到它们以---开头。我用Google搜索并找到了以下解释。

  

YAML使用三个破折号(“---”)将指令与文档分开   内容。如果没有,这也用于发出文件的开头   指令存在。

另外,我尝试了一个没有---的样本,并且理解它不是必须的。

我想我对directivedocument没有清楚的认识。有人可以用一个简单的例子来解释吗?

2 个答案:

答案 0 :(得分:22)

如果您没有使用指令开始YAML,则不必强制使用它们。如果是这种情况,你应该使用它们。

我们来看看文档

  

<强> 3.2.3.4。指令

     

每个文档可能与一组指令相关联。指令具有名称和可选序列   参数。 指令是YAML处理器的指令,和   像所有其他演示文稿详细信息没有反映在YAML中   序列化树或表示图。这个版本的YAML   定义了两个指令,“YAML”和“TAG”。所有其他指令都是   保留给YAML的未来版本。

对于指令YAML

,也可以找到in the documentation的一个例子
%YAML 1.2 # Attempt parsing
           # with a warning
---
"foo"

答案 1 :(得分:12)

您已经发现,三个破折号---用于发信号通知文档的开始,即:

  1. 要发信号通知文档,请在指令后开始,即根据当前规范的%YAML%TAG行。例如:

    %YAML 1.2
    %TAG !foo! !foo-types/
    ---
    myKey: myValue
    
  2. 要在同一流中具有多个Yaml文档(例如,一个Yaml文件)时发信号通知文档开始:

    doc 1
    ---
    doc 2
    

    如果doc 2有一些前面的指令,那么我们必须使用三个点...来向解析器指示doc 1的结尾(以及doc 2之前潜在指令的开始)。例如:

    doc 1
    ...
    %TAG !bar! !bar-types/
    ---
    doc 2
    

该规范对yaml解析器实现者很有用。但是,从用户的角度来看,我发现this article更容易阅读。

相关问题