预期的块结束YAML错误

时间:2014-01-15 17:17:16

标签: yaml

将此YAML文件粘贴到在线yaml解析器时,我收到了预期的块结束错误:

ADDATTEMPTING: 'Tentative d ajout '
ATTEMPTINGTOGIVE: 'Tenter de donner '
ATTEMPTINGTOSET1: 'Tentative de définition '
ATTEMPTINGTOSET2: ' avec '
ALREADYEXISTS: 'Erreur. Package existe déjà’
CANCEL1: 'Annulation...'
(...)

错误

ERROR:

while parsing a block mapping
  in "<unicode string>", line 1, column 1:
    ADDATTEMPTING: 'Tentative d ajout '
    ^
expected <block end>, but found '<scalar>'
  in "<unicode string>", line 6, column 11:
    CANCEL1: 'Annulation...'
              ^

7 个答案:

答案 0 :(得分:18)

ALREADYEXISTS开头的行使用作为结束语,它应该使用'。下一行(报告错误的位置)的公开引用被视为结束报价,这种混淆导致错误。

答案 1 :(得分:16)

  

我想让这个答案有意义,所以同样的   错误的用户可以享受任何麻烦。

实际上,我得到了相同的错误,但出于不同的原因,在我的情况下,我没有使用任何类型的引用,仍然得到像expected <block end>, but found BlockMappingStart这样的错误

我通过在同一个.yml文件中修复 对齐问题解决了这个问题。

  

如果我们没有管理正确的标签空间(键盘键)&#39;对于   保持继承者或祖先,然后我们必须分阶段这样的   的东西。

现在我做得很好。

答案 2 :(得分:8)

如果使用四个空格而不是两个空格缩进,也会发生此错误。

例如,以下内容会引发错误:

fields:
    - metadata: {}
        name: colName
        nullable: true

而将缩进更改为两个空格会修复它:

fields:
  - metadata: {}
    name: colName
    nullable: true

答案 3 :(得分:5)

YAML非常严格地遵循缩进结构。甚至一个空格/制表符也可能导致上述问题。就我而言,一开始只是一次空间。

因此请确保在更新YAML文件时没有引入多余的空格/制表符

答案 4 :(得分:4)

使用YAML,请记住,所有关于用于通过层次结构(缩进)定义配置的空间。解析YAML文档时遇到的许多问题只是源于给定YAML文件中某个键值之前的额外空格(或者没有足够的空格)。

答案 5 :(得分:2)

正如许多人所说,这对我来说也是一个缩进问题。

使用以下网站来纠正错误并美化YAML。

https://onlineyamltools.com/validate-yaml < / p>

答案 6 :(得分:0)

在我的情况下,当我尝试传递看起来像字节对象(b“ xxxx”)但实际上是字符串的变量时发生了错误。

您可以像这样将字符串转换为真实字节对象:

foo.strip('b"').replace("\\n", "\n").encode()