Apakah kegunaan YAML?
Format data teks lain ialah YAML ( Yet Another Markup Language ; kemudian, YAML Ain't Markup Language ). Ia digunakan untuk menyusun objek untuk penghantaran melalui rangkaian (sama seperti XML dan JSON digunakan dengan cara ini). Kerana ia boleh dibaca oleh manusia, ia juga digunakan untuk menulis fail konfigurasi, contohnya, untuk Docker, Kubernetes, Ansible, dll. Apabila YAML perlu disimpan ke fail (contohnya, fail konfigurasi), kami menggunakan satu daripada dua sambungan: .yaml atau .yml.
Sintaks bahasa
Dalam XML, kurungan sudut ( <> ) digunakan untuk menetapkan tag. Dalam JSON, kami menggunakan kurungan kerinting ( {} ). YAML menggunakan baris dan lekukan baharu.
Data disimpan sebagai pasangan nilai kunci, di mana kuncinya ialah rentetan, dan nilainya boleh terdiri daripada pelbagai jenis data (rentetan, nombor, benar/salah, tatasusunan, dll.). Kekunci ditulis tanpa tanda petikan.
Mari kita lihat cara maklumat disimpan dalam YAML:
taip | Jawa | YAML |
---|---|---|
Integer |
|
nombor: 5
|
Nombor pecahan |
|
nombor: 4.3
|
Pembolehubah Boolean |
|
sah: palsu
sah: tidak sah: mati * Nilai boolean yang sah: benar/salah, ya/tidak, hidup/mati. |
Tali |
|
bandar: bandar New York
: bandar 'New York' : "New York" * Ketiga-tiga pilihan adalah setara. |
Rentetan dengan aksara khas |
|
baris: "aaa\nbbb"
|
Komen dalam kod |
|
# komen
|
Objek |
* Kelas objek diberikan supaya anda boleh melihat struktur objek. |
orang:
nama: "Dennis" umur: 32 * Perhatikan lekukan sebelum atribut. Ia mestilah sama untuk semua atribut. |
Senarai nilai mudah |
|
umur: [1, 3,5,9,78, -5]
umur: - 1 - 3 - 5 - 9 - 78 - -5 * Kedua-dua pilihan adalah setara. |
Senarai objek |
|
orang:
- nama: "Ian" umur: 21 - nama: "Marina" umur: 25 - nama: "Owen" umur: 73 |
Seperti dalam Java, elemen senarai boleh menjadi senarai, iaitu, objek boleh bersarang di dalam satu sama lain. Tanda sempang yang menunjukkan elemen senarai seterusnya boleh diimbangi secara mendatar berbanding kunci induk, atau terletak betul-betul di bawahnya. Perkara utama ialah semua elemen mempunyai format yang sama. Ini akan membantu mengelakkan kekeliruan dan hierarki sarang yang tidak jelas.
umur:
- 1 - 3 - 5 - 9 - 78 - -5 |
umur:
- 1 - 3 - 5 - 9 - 78 - -5 |
Terdapat dua lagi nuansa apabila bekerja dengan nilai teks:
-
Teks berbilang baris. Kita boleh menyimpan teks seperti ini:
multilineTeks: "baris 1\nbaris 2\n....baris n"Tetapi ia akan menjadi sangat tidak menyenangkan untuk mencuba membacanya. Jadi terdapat | simbol (paip), yang boleh anda gunakan untuk menulis teks secara berbeza:
multilineTeks: |
baris 1
baris 2
....
baris nAnda akan bersetuju bahawa pilihan kedua adalah lebih mudah, bukan?
-
Beratur panjang. Jika anda ingin menyimpan teks pada satu baris tetapi juga mahu ia muat dalam ruang kerja IDE yang boleh dilihat, anda boleh menggunakan simbol > (lebih besar daripada).
singlelineTeks: >
mula
...
teruskan baris yang sama
...
tamatSemua teks akan dianggap sebagai satu baris.
Jika anda perlu menulis beberapa struktur data YAML ke dalam satu fail, maka anda perlu memisahkannya dengan --- (tiga sempang). Dalam amalan, jarang sekali terdapat keperluan untuk ini, tetapi yang terbaik adalah untuk mengetahui kemungkinan ini.
Contoh dokumen YAML
Mari kita cipta beberapa struktur data Java (kelas) dan objek yang sepadan, dan cuba mewakili objek sebagai YAML.
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);
}
Perwakilan yang sah dalam YAML:
perkahwinanTarikh: 2000-12-03
isteri:
nama: Ann
umur: 37
ialahWanita: ya
suami:
nama: Alex
umur: 40
ialahWanita: tiada
anak:
- nama: Iris
umur: 12
ialahWanita: benar
- nama: Olivia
umur: 5
ialahWanita: benar
---
GO TO FULL VERSION