JSON ถึง โปรแกรมแปลง YAML
แปลงโครงสร้าง JSON เป็นรูปแบบ YAML ที่สะอาด เหมาะสำหรับรายการ Kubernetes และการกำหนดค่าระบบคลาวด์
แปลงโครงสร้าง JSON เป็นรูปแบบ YAML ที่สะอาด เหมาะสำหรับรายการ Kubernetes และการกำหนดค่าระบบคลาวด์
การเปลี่ยนจาก JSON มาเป็น YAML เป็นส่วนใหญ่เกี่ยวกับการทำให้ข้อมูลอ่านง่ายขึ้นสำหรับมนุษย์ ทั้งสองรูปแบบอธิบายโครงสร้างประเภทเดียวกัน ได้แก่ วัตถุ/แผนที่ อาร์เรย์/ลำดับ สเกลาร์ แต่ไวยากรณ์ตามการเยื้องของ YAML การอ้างอิงเพิ่มเติม และการสนับสนุนความคิดเห็น ทำให้ง่ายต่อการสแกนและแก้ไขด้วยมือ ไฟล์การกำหนดค่าถือเป็นกรณีการใช้งานตามรูปแบบบัญญัติ เช่น ไฟล์ Manifest ของ Kubernetes, เวิร์กโฟลว์ CI, Playbooks แบบ Ansible และเครื่องมืออื่นๆ อีกมากมายเลือก YAML โดยเฉพาะเนื่องจากผู้แก้ไขหลักคือมนุษย์
ตัวแปลงนี้ใช้ js-yaml เพื่อทำให้วัตถุ JSON ที่แยกวิเคราะห์เป็นอนุกรมเป็น YAML ผลลัพธ์จะรักษาโครงสร้างของข้อมูลไว้อย่างแน่นอนในขณะที่ใช้แบบแผน YAML: การเยื้องสำหรับการซ้อน รายการสำหรับอาร์เรย์ คู่คีย์-ค่าสำหรับคุณสมบัติของออบเจ็กต์ การอ้างอิงสองครั้งที่เข้มงวดของ JSON นั้นผ่อนคลาย เฉพาะสตริงที่มีอักขระพิเศษหรือที่ดูเหมือนประเภทอื่นเท่านั้นที่จะถูกยกมาในเอาต์พุต
การแปลงเป็นการรักษาข้อมูล ยกเว้นในกรณีที่ YAML เพิ่มความหมาย JSON ไม่มี ไม่สามารถสร้างความคิดเห็นขึ้นใหม่ได้ (JSON ไม่มี) การอ้างอิง Anchor และนามแฝงอาจบีบอัดโครงสร้างที่ซ้ำกันแต่ไม่ได้สร้างขึ้นโดยอัตโนมัติ ผลลัพธ์จะขยายการอ้างอิงทั้งหมดแบบอินไลน์
YAML สามารถอ่านได้ง่ายกว่า JSON มากสำหรับการกำหนดค่าการแก้ไขโดยมนุษย์ การเยื้องจะแทนที่การซ้อนเครื่องหมายปีกกา เครื่องหมายคำพูดเป็นทางเลือกสำหรับสตริงแบบธรรมดา และความคิดเห็นสามารถบันทึกการตั้งค่าที่ไม่ชัดเจนได้ สำหรับไฟล์ที่มนุษย์ดูแลรักษา เช่น การกำหนดค่าแอปพลิเคชัน โครงสร้างพื้นฐานตามโค้ด สร้างไปป์ไลน์ YAML มักจะเป็นรูปแบบปลายทางที่ถูกต้องเสมอ
เครื่องมือโครงสร้างพื้นฐานสมัยใหม่สนับสนุน YAML อย่างท่วมท้น Kubernetes, แผนภูมิ Helm, Ansible, GitHub Actions, GitLab CI, Docker Compose และเครื่องมืออื่นๆ อีกมากมายที่ต้องการหรือต้องใช้ YAML การแปลงการส่งออก JSON จากระบบหนึ่งไปเป็นการกำหนดค่า YAML ไปยังอีกระบบหนึ่งถือเป็นขั้นตอนการผสานรวมตามปกติ
วาง JSON รับ YAML
ฟังก์ชันดัมพ์ของ js-yaml เดินแผนผังวัตถุ JavaScript และส่ง YAML โดยใช้การจัดรูปแบบที่กำหนดค่าได้ ความลึกของการเยื้อง ความกว้างของเส้น เกณฑ์สไตล์โฟลว์ และการจัดการใบเสนอราคาล้วนเป็นพารามิเตอร์ทั้งหมด การตั้งค่าเริ่มต้นจะสร้าง YAML ในรูปแบบบล็อกที่มีการเยื้อง 2 ช่องว่าง ซึ่งเป็นแบบแผนที่พบบ่อยที่สุด
การอ้างอิงสตริงเป็นไปตามกฎของ YAML: สตริงที่มีลักษณะเหมือนกับประเภทอื่นๆ (ตัวเลข, บูลีน, null, วันที่) จะถูกยกมาเพื่อบังคับการตีความสตริง สตริงที่มีอักขระพิเศษ (โคลอน, แฮช, ขีดกลางนำหน้า) จะถูกยกมา; สตริงตัวอักษรธรรมดาจะไม่มีการใส่เครื่องหมายคำพูด
เอาต์พุตเข้ากันได้กับ YAML 1.2 และแยกวิเคราะห์ด้วย js-yaml, PyYAML และไลบรารี YAML หลักอื่นๆ ได้อย่างหมดจด การไปกลับแบบ Idempotent (JSON → YAML → JSON) จะรักษาข้อมูลไว้ แม้ว่าการแสดง YAML จะเลือกการจัดรูปแบบตามรูปแบบบัญญัติที่อาจแตกต่างจากเทียบเท่าที่เขียนด้วยลายมือก็ตาม