ไฟล์ YAML คืออะไร??
ไฟล์ YAML ประกอบด้วยภาษา YAML (YAML ไม่ใช่ภาษามาร์กอัป) ซึ่งเป็นภาษาสำหรับการทำให้เป็นอันดับข้อมูลโดยใช้ Unicode ใช้สำหรับไฟล์การกำหนดค่า, การส่งข้อความทางอินเทอร์เน็ต, การคงอยู่ของวัตถุ ฯลฯ YAML ใช้นามสกุล .yaml สำหรับไฟล์ ไวยากรณ์ไม่ขึ้นกับภาษาโปรแกรมเฉพาะ โดยทั่วไปแล้ว YAML ได้รับการออกแบบมาสำหรับการโต้ตอบของมนุษย์และทำงานได้ดีกับภาษาโปรแกรมสมัยใหม่ การสนับสนุนสำหรับการจัดลำดับโครงสร้างข้อมูลเนทีฟตามอำเภอใจช่วยเพิ่มความสามารถในการอ่านไฟล์ YAML แต่ทำให้กระบวนการแยกวิเคราะห์และการสร้างไฟล์ซับซ้อนขึ้นเล็กน้อย
ประวัติย่อ
YAML ถูกเสนอครั้งแรกในปี 2544 และได้รับการพัฒนาโดย Clark Evans, Ingy döt Net และ Oren Ben-Kiki YAML ได้รับการกล่าวถึงครั้งแรกว่าหมายถึง “Yet Another Markup Language” เพื่อระบุจุดประสงค์ของภาษาดังกล่าวในฐานะภาษามาร์กอัป มันถูกเปลี่ยนวัตถุประสงค์ในภายหลังเป็น “YAML Aint Markup Language” เพื่อระบุวัตถุประสงค์ว่าเน้นข้อมูล
รูปแบบไฟล์ YAML
ไฟล์ YAML ประกอบด้วยประเภทข้อมูลต่อไปนี้
- สเกลาร์: สเกลาร์คือค่าต่างๆ เช่น สตริง จำนวนเต็ม บูลีน ฯลฯ
- ลำดับ: ลำดับคือรายการที่มีแต่ละรายการขึ้นต้นด้วยยัติภังค์ (-) รายการสามารถซ้อนกันได้
- การแมป: การแมปช่วยให้สามารถแสดงรายการคีย์ที่มีค่าต่างๆ ได้
ไวยากรณ์
- ช่องว่าง: การเยื้องช่องว่างใช้เพื่อระบุการซ้อนและโครงสร้างโดยรวม
ชื่อ: จอห์น สมิธ
ติดต่อ:
บ้าน: 1012355532
สำนักงาน: 5002586256
ที่อยู่:
ถนน: |
123 ตรอกทอร์นาโด
ห้องชุด 16
เมือง: East Centerville
รัฐ: KS
- ความคิดเห็น: ความคิดเห็นเขียนขึ้นต้นด้วยสัญลักษณ์ “#”
# นี่คือความคิดเห็น YAML
- รายการ: ยัติภังค์ (-) ใช้เพื่อระบุสมาชิกรายการกับสมาชิกแต่ละคนในบรรทัดที่แยกจากกัน สมาชิกรายการยังสามารถใส่วงเล็บเหลี่ยม ([…]) โดยคั่นสมาชิกด้วยเครื่องหมายจุลภาค (,)
- A
- B
- C
[เอ บี ซี]
- อาร์เรย์ที่เชื่อมโยง: อาร์เรย์ที่เชื่อมโยงจะล้อมรอบด้วยวงเล็บปีกกา ({…}) คีย์และค่าจะคั่นด้วยโคลอน (:) และแต่ละคู่คั่นด้วยเครื่องหมายจุลภาค (,)
{name: John Smith, age: 20}
- สตริง: สตริงสามารถเขียนโดยมีหรือไม่มีเครื่องหมายคำพูดคู่ (") หรือเครื่องหมายคำพูดเดี่ยว (')
สตริงตัวอย่าง
"สตริงตัวอย่าง"
'สตริงตัวอย่าง'
- เนื้อหาบล็อกสเกลาร์: เนื้อหาสเกลาร์สามารถเขียนในรูปแบบบล็อกโดยใช้สิ่งต่อไปนี้:
- |: All live breaks are significant.
- >: Each line break is folded to space. It removes the leading whitespace for each line.
ข้อมูล: |
ย.ม
(YAML ไม่ใช่ภาษามาร์กอัป)
เป็นภาษาอนุกรมข้อมูล
ข้อมูล: ?
YAML (YAML ไม่ใช่ภาษามาร์กอัป)
เป็นภาษาอนุกรมข้อมูล
- เอกสารหลายฉบับ: เอกสารหลายฉบับถูกคั่นด้วยเครื่องหมายยัติภังค์สามตัว (—) ในสตรีมเดียว ยัติภังค์ระบุจุดเริ่มต้นของเอกสาร ยัติภังค์ยังใช้เพื่อแยกคำสั่งจากเนื้อหาเอกสาร จุดสิ้นสุดของเอกสารระบุด้วยจุดสามจุด (…)
---
เอกสาร 1
---
เอกสาร 2
...
- ประเภท: ในการระบุประเภทของค่า ให้ใช้เครื่องหมายอัศเจรีย์คู่ (!!)
ตอบ: !!float 123
b: !!str 123
- แท็ก: ในการกำหนดแท็กให้กับโน้ต จะใช้เครื่องหมายแอมเปอร์แซนด์ (&) และเพื่ออ้างอิงโหนดนั้น จะใช้เครื่องหมายดอกจัน (*)
ชื่อ: จอห์น สมิธ
การเรียกเก็บเงิน: &id01
ถนน: |
123 ตรอกทอร์นาโด
ห้องชุด 16
เมือง: East Centerville
รัฐ: KS
ส่งไปที่: *id01
- คำสั่ง: เอกสาร YAML นำหน้าด้วยคำสั่งในสตรีมได้ คำสั่งเริ่มต้นด้วยเครื่องหมายเปอร์เซ็นต์ (%) ตามด้วยชื่อและพารามิเตอร์ที่คั่นด้วยช่องว่าง
%YAML 1.2
---
เนื้อหาเอกสาร
ตัวอย่างไฟล์ YAML
คุณสามารถดู ตัวอย่างไฟล์ docker yaml ด้านล่าง:
topology:
database_node_name: docker_controller
docker_controller_node_name: docker_controller
self_service_portal_node_name: docker_controller
kvm_compute_node_names: kvm_compute1
docker_compute_node_names: docker_compute1
YAML กับ JSON
โดยพื้นฐานแล้ว ทั้ง JSON และ YAML ได้รับการพัฒนาเพื่อให้รูปแบบการแลกเปลี่ยนข้อมูลที่มนุษย์อ่านได้ YAML ได้รับการตระหนักว่าเป็น superset ของรูปแบบ JSON หมายความว่าเราสามารถแยกวิเคราะห์ JSON โดยใช้โปรแกรมแยกวิเคราะห์ YAML แม้ว่าการนำทฤษฎีนี้ไปปฏิบัติจริงจะยุ่งยากเล็กน้อย ดังนั้น ความแตกต่างพื้นฐานบางประการระหว่าง YAML และ JSON จึงแสดงไว้ด้านล่าง:
YAML | JSON |
---|---|
ขั้นตอนที่ซับซ้อนและใช้เวลานานในการแยกวิเคราะห์ข้อมูลซีเรียลไลซ์ | แยกวิเคราะห์ข้อมูลซีเรียลไลซ์ JSON อย่างรวดเร็วและง่ายดายด้วยการออกแบบที่เรียบง่ายขึ้น |
การสนับสนุนชุมชนน้อยลง | การสนับสนุนและความนิยมของชุมชนที่ใหญ่ขึ้น |
สนับสนุนความคิดเห็น | ไม่สนับสนุนความคิดเห็น |
ความสามารถในการใช้การอ้างอิงวัตถุข้อมูลอื่นๆ | เป็นไปไม่ได้ที่จะทำให้โครงสร้างที่ซับซ้อนเป็นอนุกรมด้วยการอ้างอิงวัตถุ |
ลำดับชั้นแสดงโดยใช้อักขระช่องว่างคู่ ไม่อนุญาตให้ใช้อักขระแท็บ | วัตถุและอาร์เรย์จะแสดงในวงเล็บปีกกาและวงเล็บเหลี่ยม |
String quotes เป็นทางเลือก แต่สนับสนุน single และ double quotes | Strings must be in double quotes |
โหนดรูทสามารถเป็นประเภทข้อมูลใดๆ ที่ถูกต้อง | โหนดรูทต้องเป็นอาร์เรย์หรือวัตถุ |