Ano ang gamit ng YAML?
Ang isa pang format ng data ng text ay YAML ( Yet Another Markup Language ; mamaya, YAML Ain't Markup Language ). Ito ay ginagamit upang i-serialize ang mga bagay para sa paghahatid sa network (tulad ng XML at JSON ay ginagamit sa ganitong paraan). Dahil nababasa ito ng tao, ginagamit din ito para magsulat ng mga configuration file, halimbawa, para sa Docker, Kubernetes, Ansible, atbp. Kapag kailangang i-save ang YAML sa isang file (halimbawa, isang configuration file), ginagamit namin ang isa sa dalawa mga extension: .yaml o .yml.
Syntax ng wika
Sa XML, ang mga angle bracket ( <> ) ay ginagamit upang magtalaga ng mga tag. Sa JSON, gumagamit kami ng mga kulot na bracket ( {} ). Gumagamit ang YAML ng mga bagong linya at indentation.
Ang data ay nakaimbak bilang key-value pairs, kung saan ang key ay isang string, at ang value ay maaaring iba't ibang uri ng data (string, numero, true/false, array, atbp.). Ang mga susi ay isinusulat nang walang mga panipi.
Tingnan natin kung paano iniimbak ang impormasyon sa YAML:
Uri | Java | YAML |
---|---|---|
Integer |
|
numero: 5
|
Fractional na numero |
|
numero: 4.3
|
Boolean variable |
|
valid: false
valid: walang valid: off * Mga wastong halaga ng boolean: true/false, yes/no, on/off. |
String |
|
lungsod: Lungsod ng New York
: lungsod ng 'New York' : "New York" * Lahat ng tatlong mga pagpipilian ay katumbas. |
String na may mga espesyal na character |
|
linya: "aaa\nbbb"
|
Magkomento sa code |
|
# komento
|
Bagay |
* Ibinigay ang klase ng object para makita mo ang structure ng object. |
tao:
pangalan: "Dennis" edad: 32 * Bigyang-pansin ang indentation bago ang mga katangian. Ito ay dapat na pareho para sa lahat ng mga katangian. |
Listahan ng mga simpleng halaga |
|
edad: [1, 3,5,9,78, -5]
edad: - 1 - 3 - 5 - 9 - 78 - -5 * Ang parehong mga pagpipilian ay katumbas. |
Listahan ng mga bagay |
|
tao:
- pangalan: "Ian" edad: 21 - pangalan: "Marina" edad: 25 - pangalan: "Owen" edad: 73 |
Tulad ng sa Java, ang isang elemento ng isang listahan ay maaaring isang listahan, iyon ay, ang mga bagay ay maaaring ma-nest sa loob ng isa't isa. Ang gitling na nagpapahiwatig ng susunod na elemento ng listahan ay maaaring pahalang na i-offset kaugnay ng parent key, o matatagpuan mismo sa ibaba nito. Ang pangunahing bagay ay ang lahat ng mga elemento ay may parehong format. Makakatulong ito na maiwasan ang pagkalito at isang hindi tiyak na hierarchy ng nesting.
edad:
- 1 - 3 - 5 - 9 - 78 - -5 |
edad:
- 1 - 3 - 5 - 9 - 78 - -5 |
Mayroong dalawang higit pang mga nuances kapag nagtatrabaho sa mga halaga ng teksto:
-
Multiline na teksto. Maaari naming i-save ang teksto tulad nito:
multilineText: "linya 1\nlinya 2\n....linya n"Ngunit magiging lubhang hindi kanais-nais na subukang basahin iyon. Kaya mayroong | (pipe) na simbolo, na maaari mong gamitin upang isulat ang teksto sa ibang paraan:
multilineText: |
linya 1
linya 2
....
linya nSasang-ayon ka na ang pangalawang opsyon ay mas maginhawa, tama ba?
-
Mahabang linya. Kung gusto mong panatilihin ang text sa isang linya ngunit gusto mo ring magkasya ito sa nakikitang workspace ng IDE, maaari mong gamitin ang > (mas malaki kaysa) na simbolo.
singlelineText: >
simulan
...
magpatuloy sa parehong linya
...
wakasAng lahat ng teksto ay ituturing bilang isang linya.
Kung kailangan mong magsulat ng ilang istruktura ng data ng YAML sa isang file, kailangan mong paghiwalayin ang mga ito gamit ang --- (tatlong gitling). Sa pagsasagawa, bihirang kailanganin ito, ngunit pinakamainam na malaman ang posibilidad na ito.
Halimbawa ng isang YAML na dokumento
Gumawa tayo ng ilang istraktura ng data ng Java (isang klase) at isang katumbas na bagay, at subukang katawanin ang bagay bilang 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);
}
Wastong representasyon sa YAML:
kasalPetsa: 2000-12-03
asawa:
pangalan: Ann
edad: 37
ay Babae: oo
asawa:
pangalan: Alex
edad: 40
ay Babae: walang
anak:
- pangalan: Iris
edad: 12
ay Babae: totoo
- pangalan: Olivia
edad: 5
isWoman: totoo
---
GO TO FULL VERSION