Untuk apa YAML digunakan?
Format data teks lainnya adalah YAML ( Yet Another Markup Language ; nanti, YAML Ain't Markup Language ). Ini digunakan untuk membuat serial objek untuk transmisi melalui jaringan (sama seperti XML dan JSON digunakan dengan cara ini). Karena dapat dibaca manusia, ini juga digunakan untuk menulis file konfigurasi, misalnya untuk Docker, Kubernetes, Ansible, dll. Saat YAML perlu disimpan ke file (misalnya, file konfigurasi), kami menggunakan salah satu dari dua ekstensi: .yaml atau .yml.
Sintaks bahasa
Dalam XML, kurung sudut ( <> ) digunakan untuk menunjuk tag. Di JSON, kami menggunakan kurung kurawal ( {} ). YAML menggunakan baris dan lekukan baru.
Data disimpan sebagai pasangan kunci-nilai, di mana kuncinya adalah string, dan nilainya dapat berupa berbagai tipe data (string, angka, benar/salah, larik, dll.). Kunci ditulis tanpa tanda petik.
Mari kita lihat bagaimana informasi disimpan di YAML:
Jenis | Jawa | YAML |
---|---|---|
Bilangan bulat |
|
nomor 5
|
Angka pecahan |
|
nomor: 4.3
|
variabel Boolean |
|
valid: salah
valid: tidak valid: mati * Nilai boolean yang valid: benar/salah, ya/tidak, hidup/mati. |
Rangkaian |
|
kota: New York
kota: 'New York' kota: "New York" * Ketiga opsi itu setara. |
String dengan karakter khusus |
|
baris: "aaa\nbbb"
|
Komentar dalam kode |
|
# komentar
|
Obyek |
* Kelas objek diberikan sehingga Anda dapat melihat struktur objek. |
orang:
nama: "Dennis" umur: 32 * Perhatikan lekukan sebelum atribut. Itu harus sama untuk semua atribut. |
Daftar nilai sederhana |
|
umur: [1, 3,5,9,78, -5]
umur: - 1 - 3 - 5 - 9 - 78 - -5 * Kedua opsi setara. |
Daftar objek |
|
orang:
- nama: "Ian" umur: 21 - nama: "Marina" umur: 25 - nama: "Owen" umur: 73 |
Seperti di Java, elemen daftar bisa berupa daftar, yaitu objek dapat disarangkan di dalam satu sama lain. Tanda hubung yang menunjukkan elemen berikutnya dari daftar dapat diimbangi secara horizontal relatif terhadap kunci induk, atau terletak tepat di bawahnya. Yang utama adalah semua elemen memiliki format yang sama. Ini akan membantu menghindari kebingungan dan hierarki bersarang yang ambigu.
usia:
- 1 - 3 - 5 - 9 - 78 - -5 |
usia:
- 1 - 3 - 5 - 9 - 78 - -5 |
Ada dua nuansa lagi saat bekerja dengan nilai teks:
-
Teks multi baris. Kita dapat menyimpan teks seperti ini:
multilineText: "baris 1\nbaris 2\n....baris n"Tapi akan sangat tidak menyenangkan untuk mencoba membacanya. Jadi ada | (pipa) simbol, yang dapat Anda gunakan untuk menulis teks secara berbeda:
multilineTeks: |
baris 1
baris 2
....
baris nAnda pasti setuju bahwa opsi kedua lebih nyaman, bukan?
-
Garis panjang. Jika Anda ingin menyimpan teks dalam satu baris tetapi juga ingin teks tersebut pas di ruang kerja IDE yang terlihat, Anda dapat menggunakan simbol > (lebih besar dari).
singlelineText: >
mulai
...
lanjutkan baris yang sama
...
akhirSemua teks akan diperlakukan sebagai satu baris.
Jika Anda perlu menulis beberapa struktur data YAML ke dalam satu file, maka Anda perlu memisahkannya dengan --- (tiga tanda hubung). Dalam praktiknya, jarang ada kebutuhan untuk ini, tetapi yang terbaik adalah menyadari kemungkinan ini.
Contoh dokumen YAML
Mari buat beberapa struktur data Java (kelas) dan objek yang sesuai, dan coba untuk merepresentasikan 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);
}
Representasi yang valid dalam YAML:
pernikahanTanggal: 2000-12-03
istri:
nama: Ann
umur: 37
isWanita: ya
suami:
nama: Alex
umur: 40
isWanita: tidak punya
anak:
- nama: Iris
umur: 12
isWanita: benar
- nama: Olivia
umur: 5
isWoman: benar
---
GO TO FULL VERSION