YAML ใช้สำหรับอะไร
รูปแบบข้อมูลข้อความอื่นคือ YAML ( Yet Another Markup Languageต่อมาคือYAML Ain't Markup Language ) มันถูกใช้เพื่อซีเรียลไลซ์วัตถุสำหรับการส่งผ่านเครือข่าย (เช่นเดียวกับ XML และ JSON ที่ใช้วิธีนี้) เนื่องจากเป็นไฟล์ที่มนุษย์อ่านได้ จึงใช้ในการเขียนไฟล์การกำหนดค่า เช่น สำหรับ Docker, Kubernetes, Ansible เป็นต้น เมื่อจำเป็นต้องบันทึก YAML ลงในไฟล์ (เช่น ไฟล์การกำหนดค่า) เราจะใช้หนึ่งในสองไฟล์ นามสกุล: .yaml หรือ .yml
ไวยากรณ์ของภาษา
ใน XML จะใช้ วงเล็บมุม ( <> ) เพื่อระบุแท็ก ใน JSON เราใช้วงเล็บปีกกา ( {} ) YAML ใช้การขึ้นบรรทัดใหม่และการเยื้อง
ข้อมูลจะถูกจัดเก็บเป็นคู่คีย์-ค่า โดยที่คีย์คือสตริง และค่าสามารถเป็นประเภทข้อมูลต่างๆ ได้ (สตริง ตัวเลข จริง/เท็จ อาร์เรย์ ฯลฯ) คีย์ถูกเขียนโดยไม่มีเครื่องหมายอัญประกาศ
มาดูกันว่าข้อมูลถูกจัดเก็บอย่างไรใน YAML:
พิมพ์ | ชวา | ย.ม |
---|---|---|
จำนวนเต็ม |
|
จำนวน: 5
|
จำนวนเศษส่วน |
|
หมายเลข: 4.3
|
ตัวแปรบูลีน |
|
ถูกต้อง: เท็จ
ถูกต้อง: ไม่ ถูกต้อง: ปิด * ค่าบูลีนที่ถูกต้อง: จริง/เท็จ ใช่/ไม่ใช่ เปิด/ปิด |
สตริง |
|
เมือง: นิวยอร์ก
เมือง: 'นิวยอร์ก' เมือง: "นิวยอร์ก" * ทั้งสามตัวเลือกเท่ากัน |
สตริงที่มีอักขระพิเศษ |
|
บรรทัด: "aaa\nbbb"
|
แสดงความคิดเห็นในรหัส |
|
#ความคิดเห็น
|
วัตถุ |
* มีการกำหนดคลาสของวัตถุเพื่อให้คุณเห็นโครงสร้างของวัตถุ |
คน:
ชื่อ: "เดนนิส" อายุ: 32 * ให้ความสนใจกับการเยื้องหน้าแอตทริบิวต์ จะต้องเหมือนกันสำหรับแอตทริบิวต์ทั้งหมด |
รายการของค่าอย่างง่าย |
|
อายุ: [1, 3,5,9,78, -5]
อายุ: - 1 - 3 - 5 - 9 - 78 - -5 * ตัวเลือกทั้งสองเทียบเท่ากัน |
รายการวัตถุ |
|
คน:
- ชื่อ: "เอียน" อายุ: 21 - ชื่อ: "มารีน่า" อายุ: 25 - ชื่อ: "โอเว่น" อายุ: 73 |
เช่นเดียวกับในภาษาจาวา องค์ประกอบของรายการสามารถเป็นรายการได้ กล่าวคือ วัตถุสามารถซ้อนอยู่ภายในกันได้ ยัติภังค์ที่ระบุองค์ประกอบถัดไปของรายการสามารถหักล้างในแนวนอนโดยสัมพันธ์กับคีย์หลัก หรืออยู่ด้านล่างโดยตรง สิ่งสำคัญคือองค์ประกอบทั้งหมดมีรูปแบบเดียวกัน สิ่งนี้จะช่วยหลีกเลี่ยงความสับสนและลำดับชั้นการซ้อนที่ไม่ชัดเจน
อายุ:
- 1 - 3 - 5 - 9 - 78 - -5 |
อายุ:
- 1 - 3 - 5 - 9 - 78 - -5 |
มีความแตกต่างอีกสองประการเมื่อทำงานกับค่าข้อความ:
-
ข้อความหลายบรรทัด เราสามารถบันทึกข้อความได้ดังนี้
ข้อความหลายบรรทัด: "บรรทัด 1\nบรรทัด 2\n....บรรทัด n"แต่คงไม่เป็นที่พอใจนักหากลองอ่านดู ดังนั้นจึงมี| สัญลักษณ์ (ไปป์) ซึ่งคุณสามารถใช้เพื่อเขียนข้อความในลักษณะต่างๆ ได้:
ข้อความหลายบรรทัด: |
บรรทัดที่ 1
บรรทัดที่ 2
....
บรรทัดที่ nคุณจะยอมรับว่าตัวเลือกที่สองสะดวกกว่าใช่ไหม
-
เส้นยาว หากคุณต้องการให้ข้อความอยู่ในบรรทัดเดียวแต่ต้องการให้พอดีกับพื้นที่ทำงานที่มองเห็นได้ของ IDE คุณสามารถใช้สัญลักษณ์> (มากกว่า)
singlelineText: >
เริ่มต้น
...
ต่อบรรทัดเดิม
...
จบข้อความทั้งหมดจะถือเป็นบรรทัดเดียว
หากคุณต้องการเขียนโครงสร้างข้อมูล YAML หลายรายการเป็นไฟล์เดียว คุณต้องแยกโครงสร้างเหล่านั้นด้วย--- (ยัติภังค์สามตัว) ในทางปฏิบัติ แทบไม่มีความจำเป็นสำหรับสิ่งนี้ แต่ทางที่ดีควรตระหนักถึงความเป็นไปได้นี้
ตัวอย่างเอกสาร YAML
มาสร้างโครงสร้างข้อมูล Java (คลาส) และวัตถุที่สอดคล้องกัน และพยายามแสดงวัตถุเป็น 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);
}
การเป็นตัวแทนที่ถูกต้องใน YAML:
งานแต่งงานวันที่: 2000-12-03
ภรรยา:
ชื่อ: แอน
อายุ: 37
ปี ผู้หญิง: ใช่
สามี:
ชื่อ: อเล็กซ์
อายุ: 40 ปี
ผู้หญิง: ไม่มี
ลูก:
- ชื่อ: ไอริส
อายุ: 12 ปี
ผู้หญิง: จริง
- ชื่อ: โอลิเวีย
อายุ: 5
isWoman: จริง
---