Mire használható a YAML?
Egy másik szöveges adatformátum a YAML ( Yet Another Markup Language ; később a YAML Ain't Markup Language ). Objektumok sorba rendezésére szolgál a hálózaton keresztüli átvitelhez (ahogy az XML és a JSON is használatos ilyen módon). Mivel ember által olvasható, konfigurációs fájlok írására is használják, például Docker, Kubernetes, Ansible stb. esetén. Ha a YAML-t fájlba (például konfigurációs fájlba) kell menteni, akkor a kettő egyikét használjuk. kiterjesztések: .yaml vagy .yml.
Nyelvi szintaxis
Az XML-ben a szögletes zárójeleket ( <> ) használják a címkék kijelölésére. A JSON-ban szögletes zárójeleket ( {} ) használunk . A YAML új sorokat és behúzást használ.
Az adatok kulcs-érték párokként tárolódnak, ahol a kulcs egy karakterlánc, és az érték többféle adattípus lehet (karakterlánc, szám, igaz/hamis, tömb, stb.). A kulcsokat idézőjelek nélkül írjuk.
Nézzük meg, hogyan tárolódnak az információk a YAML-ben:
típus | Jáva | YAML |
---|---|---|
Egész szám |
|
szám: 5
|
Törtszám |
|
szám: 4.3
|
Logikai változó |
|
érvényes: hamis
érvényes: nem érvényes: ki * Érvényes logikai értékek: igaz/hamis, igen/nem, be/ki. |
Húr |
|
város: New York
város: "New York" város: "New York" * Mindhárom lehetőség egyenértékű. |
Karakterlánc speciális karakterekkel |
|
sor: "aaa\nbbb"
|
Megjegyzés a kódban |
|
# megjegyzés
|
Tárgy |
* Az objektum osztálya adott, így láthatja az objektum szerkezetét. |
személy:
név: "Dennis" életkor: 32 * Ügyeljen az attribútumok előtti behúzásra. Minden attribútumnál azonosnak kell lennie. |
Egyszerű értékek listája |
|
korosztály: [1, 3,5,9,78, -5]
korosztály: - 1 - 3 - 5 - 9 - 78 - -5 * Mindkét lehetőség egyenértékű. |
Az objektumok listája |
|
személyek:
- név: "Ian" életkor: 21 - név: "Marina" életkor: 25 - név: "Owen" életkor: 73 |
A Java-hoz hasonlóan egy lista eleme lehet lista, vagyis az objektumok egymásba ágyazhatók. A lista következő elemét jelző kötőjel a szülőkulcshoz képest vízszintesen eltolható, vagy közvetlenül alatta helyezhető el. A lényeg az, hogy minden elem azonos formátumú legyen. Ez segít elkerülni a zavart és a kétértelmű egymásba ágyazási hierarchiát.
korosztály:
- 1 - 3 - 5 - 9 - 78 - -5 |
korosztály:
- 1 - 3 - 5 - 9 - 78 - -5 |
A szöveges értékekkel való munka során további két árnyalat van:
-
Többsoros szöveg. A szöveget így menthetjük el:
többsoros szöveg: "1. sor\n2. sor\n....n. sor"De nagyon kellemetlen lenne megpróbálni elolvasni. Tehát ott van a | (cső) szimbólum, amellyel a szöveget másképpen írhatja:
többsorosSzöveg: |
1. sor
2. sor
....
sor nElfogadod, hogy a második lehetőség kényelmesebb, igaz?
-
Hosszú vonalak. Ha azt szeretné, hogy a szöveg egy sorban maradjon, de elférjen az IDE látható munkaterületén, használhatja a > (nagyobb mint) szimbólumot.
singlelineText: >
kezdődik
...
ugyanazon sor folytatása
...
végeA rendszer az összes szöveget egy sorként kezeli.
Ha több YAML adatstruktúrát kell egy fájlba írni, akkor ezeket --- (három kötőjel) választja el . A gyakorlatban erre ritkán van szükség, de a legjobb, ha tisztában vagyunk ezzel a lehetőséggel.
Példa egy YAML dokumentumra
Hozzunk létre valamilyen Java adatstruktúrát (egy osztályt) és egy megfelelő objektumot, és próbáljuk meg az objektumot YAML-ként ábrázolni.
class Family {
private Date weddingDate;
private Person wife;
private Person husband;
private List<Person> children;
// Getters and setters are omitted
}
class Person {
private final String name;
private final boolean isWoman;
private int age;
public Person(String name, int age, boolean isWoman) {
this.name = name;
this.age = age;
this.isWoman = isWoman;
}
// Getters and setters are omitted
}
public static void main(String[] args) {
Person wife = new Person("Ann", 37, true);
Person husband = new Person("Alex", 40, false);
var children = List.of(
new Person("Iris", 12, true),
new Person("Olivia", 5, true)
);
Date weddingDate = new Date(/* some long */);
Family family = new Family();
family.setWeddingDate(weddingDate);
family.setWife(wife);
family.setHusband(husband);
family.setChildren(children);
}
Érvényes képviselet a YAML-ben:
esküvőDátum: 2000-12-03
feleség:
név: Ann
életkor: 37
isNő: igen
férj:
név: Alex
életkor: 40
isNő: nincs
gyerek:
- név: Iris
életkor: 12
isNő: igaz
- név: Olivia
kor: 5
isWoman: igaz
---
GO TO FULL VERSION