2016-07-03 6 views
0

Ich habe versucht, 5 oder 6 online YAML-Parser und sie alle geben mir die gleichen fehler- Gruppen:Parsing eine YAML Datei

ERROR: 

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

ich auch den Abstand erforscht haben, und es scheint korrekt zu sein. Der "Standardwert" ist 4 Leerzeichen vom Rand entfernt und "wahr" ist ein Leerzeichen entfernt vom Doppelpunkt.

Dies ist die komplette Datei I

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: 
    - 
    - 

Antwort

0

Das Problem ist, bearbeiten ich versuche, (sind?) Die Blockschriften Member und Donator usw. vordefault: true und build: true.

Mehrfachverschachtelung in YAML erfordert, dass der vorangehende Schlüssel einen Doppelpunkt nach es hat. Ohne dies würde es scheinen YAML Parser werden einfach denken, dass der Schlüssel in der nächsten Zeile endet (d. H. Bei default, so dass der Schlüssel Member\n default ist), die ein Nein ist und löst den Fehler korrekt aus, den Sie sehen.

Ganz einfach ändern zu

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

usw.

In Python mit PyYAML, das obige Snippet wird übersetzt

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

den Rest Ihres YAML ist nicht gültig entweder. Tun Sie etwas über die seltsame - DEFAULT in der Mitte Ihrer Verschachtelung, sonst wird Ihre YAML nicht geparst werden, da inheritance: Member effektiv den Block zu beenden.

+0

Vielen Dank; der -Default sollte -Member sein, darauf habe ich mich nicht konzentriert, weil ich gerade erst versucht habe, das Format richtig zu bekommen –