【发布时间】:2018-09-28 02:07:09
【问题描述】:
我在 Internet 上看到过一些建议,如果您希望将 YAML 标量值作为字符串处理,您应该引用它:
foo : "2018-04-17"
在上面的示例中,此建议旨在告诉我值 2018-04-17 将由任何给定的 YAML 解析器作为其本地语言的字符串类型处理。例如,SnakeYAML 将在此建议为真时将其解释为java.lang.String,而不是java.util.Date。 (碰巧,SnakeYAML 将其解释为 java.util.Date,引号或不引号,这就是我问这个问题的原因。)
但是,尽管这个建议可能发生与任何给定的解析器一起工作,我看不出YAML 1.2. specification这个建议可能来自哪里。我能找到的最接近的是the following sentence:
YAML 允许标量以多种格式呈现。例如,整数“
11”也可以写成“0xB”。标签必须指定将格式化内容转换为规范形式以用于相等性测试的机制。与节点样式一样,格式是表示细节,不会反映在序列化树和表示图中。
还有this one:
标量样式是一种表示细节,不得用于传达内容信息,除非为了标记解析目的而区分普通标量。
还有this one:
注意分辨率一定不能考虑cmets、缩进、节点样式等表现细节。
尽管如此,我看到很多 YAML 文档都依赖于双引号的值意味着它会被解析为字符串的建议,这让我觉得我误读了一些东西。这个问题有争议吗?
【问题讨论】: