ตัวแปลง YAML <> TOML
การกำหนดค่า
การเยื้อง
YAML
TOML
รายละเอียดทางเทคนิค
ตัวแปลง YAML ↔ TOML ทำงานอย่างไร
เครื่องมือนี้ทำอะไร
ตัวแปลง YAML ↔ TOML แปลงข้อมูลระหว่างรูปแบบ YAML และ TOML (Tom's Obvious, Minimal Language) โดยคงโครงสร้างและค่าของข้อมูลไว้ ตัวแปลงนี้รองรับการแปลงสองทิศทาง: yaml เป็น toml และ toml เป็น yaml ทั้ง YAML และ TOML มักใช้กับไฟล์คอนฟิก โดย YAML เป็นที่นิยมในเครื่องมือ DevOps (Kubernetes, Docker Compose, Ansible) และ TOML เป็นที่นิยมในโปรเจ็กต์ Rust (Cargo.toml) และ Python (pyproject.toml) ตัวแปลงรองรับการกำหนดการเยื้องสำหรับเอาต์พุต YAML ทำให้คุณเลือกได้ระหว่างการเยื้อง 2 ช่องว่างหรือ 4 ช่องว่างให้ตรงกับสไตล์ไกด์ของโปรเจ็กต์
กรณีการใช้งานทั่วไปของนักพัฒนา
นักพัฒนาใช้ตัวแปลง YAML TOML เมื่อต้องย้ายคอนฟิกระหว่างระบบนิเวศของเครื่องมือที่ต่างกัน ทำให้รูปแบบคอนฟิกเป็นมาตรฐาน หรือทำงานกับโปรเจ็กต์ที่ใช้รูปแบบไฟล์คอนฟิกต่างกัน ตัวแปลงมีประโยชน์เมื่อย้ายจากคอนฟิกที่อิง YAML (เช่น Kubernetes manifests) ไปเป็นคอนฟิกที่อิง TOML (เช่นโปรเจ็กต์ Rust Cargo) หรือในทางกลับกัน ก่อนแปลง คุณอาจต้องการจัดรูปแบบ YAML ด้วย YAML Formatter หรือจัดรูปแบบ TOML ด้วย TOML Formatter เพื่อให้อ่านง่ายขึ้น ตัวแปลงช่วยเมื่อดีบักปัญหาคอนฟิก เปรียบเทียบรูปแบบ หรือเตรียมข้อมูลสำหรับเครื่องมือที่คาดหวัง YAML หรือ TOML
รูปแบบข้อมูล ชนิด หรือรูปแบบย่อย
YAML และ TOML เป็นรูปแบบการทำซีเรียลไลซ์ข้อมูลที่มนุษย์อ่านได้ทั้งคู่ แต่มีไวยากรณ์และความสามารถต่างกัน ทั้งสองรองรับอ็อบเจ็กต์ อาร์เรย์ สตริง ตัวเลข บูลีน และค่า null YAML รองรับคอมเมนต์ สตริงหลายบรรทัด anchors/aliases และ flow styles TOML รองรับคอมเมนต์ inline tables และ array of tables ระหว่างการแปลง ฟีเจอร์บางอย่างจะสูญหาย: คอมเมนต์ของ YAML จะถูกคงไว้เมื่อแปลงเป็น TOML (ทั้งคู่รองรับคอมเมนต์) แต่ anchors/aliases ของ YAML จะถูกคลี่ (resolve) และไม่ถูกคงไว้ โครงสร้างตารางของ TOML จะถูกแปลงเป็นโครงสร้างอ็อบเจ็กต์ซ้อนของ YAML ตัวแปลงคงชนิดข้อมูลไว้ แต่มีกรณีขอบบางอย่าง: ชนิดวัน-เวลา (date-time) ของ TOML จะถูกแปลงเป็นสตริงของ YAML และ inline tables ของ TOML จะถูกแปลงเป็นอ็อบเจ็กต์ของ YAML
ข้อผิดพลาดที่พบบ่อยและกรณีขอบ
ปัญหาที่พบบ่อยอย่างหนึ่งคือ anchors และ aliases ของ YAML (ใช้สำหรับการอ้างอิง) จะถูกคลี่ (resolve) ระหว่างการแปลงและไม่ถูกคงไว้เป็นการอ้างอิงใน TOML อีกข้อควรระวังคือการจัดการโครงสร้างตาราง: TOML ใช้หัวตารางอย่าง [table]ซึ่งจะถูกแปลงเป็นโครงสร้างอ็อบเจ็กต์ซ้อนของ YAML TOML array of tables (ใช้ [[array]]) จะถูกแปลงเป็นอาร์เรย์ของ YAML ค่าวันและวัน-เวลาใน TOML จะถูกแปลงเป็นสตริงของ YAML เมื่อแปลงโครงสร้างซ้อนขนาดใหญ่ ให้ตรวจสอบว่าเอาต์พุตตรงตามที่คาดหวัง โดยเฉพาะกรณีขอบอย่างอาร์เรย์ว่าง ค่า null และอ็อบเจ็กต์ที่ซ้อนลึก สตริงหลายบรรทัดของ YAML ที่ใช้ block scalars (| หรือ >) จะถูกแปลงเป็นสตริงของ TOML ซึ่งอาจทำให้รูปแบบสูญหาย
เมื่อใดควรใช้เครื่องมือนี้แทนการเขียนโค้ด
ใช้ตัวแปลงนี้สำหรับการแปลงรูปแบบอย่างรวดเร็ว การแปลงแบบครั้งเดียว หรือเมื่อทำงานนอกสภาพแวดล้อมการพัฒนาของคุณ เหมาะสำหรับการแปลงไฟล์คอนฟิก เปรียบเทียบรูปแบบ หรือเตรียมข้อมูลสำหรับเครื่องมือต่าง ๆ สำหรับโค้ดโปรดักชัน ให้ใช้ไลบรารีแปลงที่ผสานรวมอยู่ในแอปพลิเคชันของคุณ ซึ่งสามารถจัดการการแปลงรูปแบบเป็นส่วนหนึ่งของไปป์ไลน์การประมวลผลข้อมูลได้ ไลบรารีสำหรับพาร์ส YAML และ TOML ให้การจัดการข้อผิดพลาดที่ดีกว่า ความปลอดภัยของชนิดข้อมูล (type safety) และการผสานรวมกับโค้ดเบสของคุณ เครื่องมือบนเบราว์เซอร์เหมาะสำหรับการแปลงแบบเฉพาะกิจและการสำรวจ ในขณะที่โซลูชันแบบโค้ดให้การทำงานอัตโนมัติ การตรวจสอบความถูกต้อง และการผสานรวมกับไปป์ไลน์ CI/CD