YAML kent drie soorten gegevenstypen:
- Scalair
- Lijst
- Woordenboek
Scalair gegevenstype:
Scalair is een eenvoudig gegevenstype. In YAML betekent scalair een eenvoudige waarde voor een sleutel. De waarde van de scalair kan geheel getal, float, Boolean en string zijn. Scalaire gegevenstypen worden ingedeeld in twee gegevenstypen:
- Numeriek Gegevenstype
- Snaar
Numeriek Gegevenstype
Er zijn drie typen numerieke gegevenstypen:
- Geheel getal
- Drijvende-kommagetallen
- Booleaanse waarden
Een Gegevenstype geheel getal kan decimaal, octaal of hexadecimaal zijn.
Bijvoorbeeld:
array gesorteerd in Java
--- age: 12345 octalexample: 012345 hexaexample: 0x12d4
Hier wordt de hexadecimale waarde aangegeven met 0x, en de octale waarde met voorloopnul. Wanneer we dit document uitvoeren op ons Python-script, wordt de volgende uitvoer gegenereerd:
age: 12345 octalexample: 9946 hexaexample: 4820
De drijvende-kommawaarde kan vast en exponentieel zijn.
Bijvoorbeeld:
--- height: 180.0 exp: 12.3015e+05
Wanneer we de bovenstaande entiteit evalueren, krijgen we het volgende:
height: 180.0 exp: 1230150.0
A Booleaanse waarde kan Waar/Onwaar of Ja/Nee of Aan/Uit zijn.
Bijvoorbeeld:
--- boolenval1: True booleanval2: False fan: On light: Off
Snaar
YAML-tekenreeksen zijn Unicode. In het volgende voorbeeld gaan we een eenvoudige tekenreeks definiëren, zonder aanhalingstekens.
Voorbeeld:
--- str1: this is a normal string
Wanneer we dit verwerken, wordt de volgende uitvoer gegenereerd:
str1: this is a normal string
Nu zullen we een string definiëren met een escape-reeks. De volgende tekenreeks bevat een speciaal teken (anders dan alfanumeriek), dus dubbele aanhalingstekens.
--- str1: 'the cost is 390 ' str2: the cost is 390
Wanneer we dit verwerken, wordt de volgende uitvoer gegenereerd:
str1: the cost is 390 str2: the cost is 390
Tijdens het YAML-bestand kunnen we de waarde van een gegevensvariabele instellen op nul. Later kunnen we een programma schrijven om de waarde van null in een andere waarde te veranderen.
--- str1: null str2: ~
Ons programma verwerkt dit als:
str1: none str2: none
In YAML kunnen we een tekenreeks van meerdere regels op één regel schrijven met behulp van het > symbool. Hierin wordt een newline-teken ( ) genegeerd.
Voorbeeld:
str: > this is a multi-line string it spans more than one line
De bovenstaande string wordt zonder de nieuwe regels als volgt geïnterpreteerd:
str : this is a multi-line string it spans more than one line
In YAML kunnen we een tekenreeks met meerdere regels in een nieuwe regel schrijven met behulp van | symbool. Hierin wordt het newline-teken ( ) opgenomen.
Voorbeeld:
in een string werpen
str: | this is a multi-line string it spans more than one line
We zien de nieuwe regels dus als volgt in het document:
str : this is a multi-line string it spans more than one line
Lijsten
We kunnen de lijst als volgt op één regel definiëren:
--- items: [6, 7, 8, 9, 10] name: [six, seven, eight, nine, ten]
Deze stijl staat bekend als blokstijl. We kunnen de bovenstaande lijst als volgt in meerdere regels plaatsen:
--- items: - 6 - 7 - 8 name: - 'six' - 'seven' - 'eight' - 'nine'
Deze stijl staat bekend als flowstijl. Een lijst die complexe objecten bevat, heeft meerdere regels nodig.
--- items: - values: value1: value 2: value 3: - other values: key: value
Een array kan een willekeurig aantal geldige YAML-waarden bevatten. Maar de waarde van een lijst kan niet van hetzelfde type zijn.
Woordenboeken
Als we een complex YAML-bestand willen schrijven dat de complexe datastructuur bevat, zullen we woordenboeken gebruiken. Het is een verzameling sleutel-waardeparen en elk van de sleutel-waardeparen kan met veel opties worden genest.
Voorbeeld 1:
--- student1: 'john' hobbies: - music - reading - dancing
In het bovenstaande voorbeeld is student de eerste sleutel en john de waarde. Hobby's zijn de tweede sleutel, maar deze is genest, wat betekent dat deze een lijst met waarden bevat. De waarde van de sleutel kan opnieuw een sleutel:waardepaar zijn, wat we in het volgende voorbeeld zullen zien.
Voorbeeld 2:
student2: fatherName: 'William' motherName: 'Marry' subjectDetails: subject1: 70 subject2: 100
De subjectDetails toont een sleutel, en de waarde van deze sleutel is een lijst met sleutel: waardeparen. vadernaam, moedernaam en onderwerpnaam zijn de sleutels. Waar de sleutel subjectName een lijst met sleutel bevat: waardeparen en onderwerp1 en onderwerp2 zijn de sleutels voor de waarden 70 en 100.