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

 

Verwante artikelen