解析YAML文件

时间:2016-07-03 23:18:43

标签: yaml

我尝试了5或6个在线YAML解析器,它们都给了我相同的错误组:

ERROR:

mapping values are not allowed here
  in "<unicode string>", line 3, column 12:
        default: true
               ^

我也研究了间距,看起来是正确的。 “默认”是距离边缘4个空格,“true”是距离冒号一个空格。

这是我正在尝试编辑的完整文件

groups:
  Member
    default: true
    build: true
    prefix: '&b&lMember&f'
    permissions:
    - shop.use
    - shop.destroy


  Donator
    build: true
    inheritance: Member
    - Default
    prefix: '&d&lDonator&f'
    permissions:
    - 
    - 

1 个答案:

答案 0 :(得分:0)

MemberDonator之前,问题是(是?)块标题default: truebuild: true

YAML中的多个嵌套要求前面的键在之后有一个冒号。如果没有这个,看起来YAML解析器只会认为密钥在下一行(即default处结束,因此密钥为Member\n default)这是一个禁忌并正确触发错误你看。

只需将其更改为

即可
groups:
 Member: # note the colon here!
    default: true
    build: true
    prefix: '&b&lMember&f'
    permissions:
        - shop.use
        - shop.destroy

等。

在Python中使用PyYAML,上面的代码段被翻译为

>>> yaml.safe_load(open("testfile.yaml")
{'groups': {'Members': {'default': True, 'prefix': '&b&lMember&f', 'build': True, 'permissions': ['shop.use', 'shop.destroy']}}}

YAML的剩余部分也无效。在嵌套过程中对奇怪的- DEFAULT做一些事情,否则你的YAML将无法被解析,因为inheritance: Member将有效地结束块。