YAML
Op deze pagina:
YAML, YAML ain't markup taal, is een voor de mens goed leesbare gegevens serialisatie standaard voor alle programmeertalen. YAML is een handig formaat voor configuratie bestanden. YAML bestanden zijn zo expressief als XML bestanden en zo leesbaar als .ini bestanden.
YAML is een strikte superset van JSON, met als aanvulling het syntactisch belangrijk zijn van nieuwe regels en inspringing, zoals in Python. In tegenstelling tot Python staat YAML geen tabs toe als teken voor inspringing.
YAML is hoofdlettergevoelig. De YAML bestanden hebben als extensie .yaml.
De start van een YAML document
De start van een YAML document wordt aangegeven met drie streepjes:
---
Het einde van een YAML document
Het einde van een YAML document wordt aangegeven met 3 punten:
...
Commentaar in een YAML document
Commentaar wordt in een YAML document aangegeven met een hekje gevolgd door een spatie en dan het commentaar.
# Dit is commentaar
Sleutel-waarde paren
Sleutel-waarde paren worden gescheiden door een dubbele punt. Een 1 is een cijfer, geen boolean.
sleutel: waarde
sleutel2: 100
sleutel3: 1e+12 # wetenschappelijke notatie
sleutel4: True # boolean
sleutel met spaties: waarde
0.75: een sleutel hoeft geen string te zijn
# sleutel tussen aanhalingtekens vanwege de dubbele punt:
'sleutel met een dubbele punt:': waarde
UTF-8/16/32
UTF-8/16/32 tekens moet gecodeerd staan:
Superscript twee: u00B2
Tekstblokken met meerdere regels
Strings bestaande uit meerdere regels kunnen letterlijk zijn (met |) waarbij de nieuwe regels letterlijk worden overgenomen, of ze kunnen gevouwen zijn (met >), waarbij nieuwe regels worden vervangen door spaties.
letterlijk: |
Dit hele tekstblok zal de waarde zijn van de 'letterlijk' sleutel,
waarbij de regelafbrekingen worden behouden.
Dit loopt door tot de inspringing ophoudt en teruggaat naar
de inspringing van voordat de waarde begon.
Regels met extra inspringing houden deze extra inspringing
deze regels hebben een inspringing van 4 spaties.
gevouwen: >
Dit hele tekstblok zal de waarde zijn van de 'gevouwen' sleutel, maar nu
zal elke nieuwe regel vervangen worden door een spatie.
Lege regels zullen wel worden vervangen door een nieuw regelteken.
Regels met extra inspringing houden deze extra inspringing
deze tekst loopt over 2 regels.
Sleutels kunnen ook bestaan uit tekstblokken van meerdere regels, deze worden dan voorafgegaan door een vraagteken en een spatie:
? |
Dit is een sleutel
die meerdere regels heeft
: en dit is de waarde
JSON stijl
YAML is een superset van JSON, daarom mag je ook gegevens in JSON stijl gebruiken.
json_map: {"sleutel": "waarde"}
json_seq: [3, 2, 1, "start"]
de quotes zijn optioneel: {sleutel: [3, 2, 1, start]}
Gegevens nesten
Het nesten van gegevens gebeurt via inspringing, gebruikelijk zijn inspringingen van 2 spaties.
geneste_map:
sleutel: waarde
nog_een_sleutel: een andere waarde
nog_een_geneste_map:
bedrag: 24.98
Sequences (lijsten)
Een sequence is een lijst. Sequences kunnen ook genest zijn.
een_sequence:
- Item 1
- Item 2
- 0.5 # sequences kunnen verschillende typen bevatten.
- sleutel: waarde
nog_een_sleutel: een_andere_waarde
-
- Dit is een sequence
- binnen een andere sequence
- - - Geneste sequence indicatoren
- kunnen ingeklapt zijn
Datum en tijd
Datum en tijd worden door YAML begrepen als ze in ISO formaat zijn:
datumtijd: 2020-12-16T05:45:24.1Z
datumtijd_met_spaties: 2020-12-16 22:45:32.10 -2
datum: 2020-12-16
##Sets
Sets bestaan ook in YAML, het zijn maps met null-waarden:
set:
? item1
? item2
? item3
# of:
{item1, item2, item3}
# Sets zijn maps met null waarden
# het bovenstaande is gelijkwaardig met:
set2:
item1: null
item2: null
item3: null