ตัวแปลง JSON ↔ YAML ↔ TOML
แปลงระหว่าง JSON, YAML และ TOML พร้อมตรวจจับรูปแบบอัตโนมัติ
เกี่ยวกับเครื่องมือนี้
แปลงไปมาระหว่าง JSON, YAML และ TOML ได้ทุกทิศทาง รูปแบบต้นทางถูกตรวจจับอัตโนมัติขณะที่คุณวาง — วงเล็บบ่งชี้ JSON, คีย์ตามด้วยทวิภาคบ่งชี้ YAML, [ตาราง] บ่งชี้ TOML — พร้อมตัวเลือกกำหนดเองสำหรับข้อมูลที่กำกวม การแปลงผ่านการแยกวิเคราะห์จริง ผลลัพธ์จึงถูกต้องแน่นอน ไม่ใช่การแปลงข้อความทีละบรรทัด
แต่ละรูปแบบมีจุดแข็งของตัวเอง: JSON สำหรับ API และการแลกเปลี่ยนระหว่างเครื่อง, YAML สำหรับคอนฟิกที่คนแก้ด้วยมือ (Kubernetes, ไปป์ไลน์ CI), TOML สำหรับไฟล์คอนฟิกที่มีชนิดข้อมูลชัดเจน (Cargo, pyproject) การย้ายข้อมูลระหว่างรูปแบบเหล่านี้ด้วยมือเชื้อเชิญความผิดพลาดเรื่องการย่อหน้าและอัญประกาศ ซึ่งการแปลงนี้ขจัดไปได้
ตัวแปลงบอกตรง ๆ เรื่องข้อจำกัดของรูปแบบ: TOML ไม่มีอาร์เรย์ที่ระดับบนสุดและไม่มี null การแปลงเอกสารลักษณะนั้นจะรายงานเหตุผล แทนที่จะทิ้งข้อมูลไปเงียบ ๆ
คำถามที่พบบ่อย
- คอมเมนต์รอดจากการแปลงไหม?
- ไม่รอด — JSON ไม่มีไวยากรณ์คอมเมนต์ และการแปลงผ่านโครงสร้างข้อมูลที่แยกวิเคราะห์แล้ว ซึ่งไม่พาคอมเมนต์ไปด้วย การแปลง YAML → JSON → YAML จะทำให้คอมเมนต์หายไปอย่างถาวร ให้เก็บไฟล์ต้นฉบับไว้เมื่อคอมเมนต์มีความสำคัญ
- ทำไม “no” ใน YAML ของฉันกลายเป็น false?
- YAML 1.1 ถือว่า yes/no/on/off เป็นบูลีน และรหัสประเทศ NO ก็เลยกลายเป็น false อย่างที่เลื่องลือ ตัวแยกวิเคราะห์ที่นี่ทำตาม YAML 1.2 (เฉพาะ true/false) แต่ไฟล์ที่เขียนมาเพื่อตัวแยกวิเคราะห์รุ่นเก่าก็ยังอาจสร้างความประหลาดใจได้ ให้ใส่อัญประกาศคร่อมสตริงที่ดูเหมือนบูลีน ตัวเลข หรือวันที่
- ทำไม JSON ของฉันแปลงเป็น TOML ไม่ได้?
- TOML ต้องมีตาราง (อ็อบเจกต์) ที่ระดับบนสุด — อาร์เรย์หรือค่าเดี่ยว ๆ เป็นเอกสาร TOML ไม่ได้ — และมันไม่มี null ให้ปรับโครงสร้างข้อมูล (ห่ออาร์เรย์ไว้ในคีย์ ตัดหรือแทน null) แล้วมันจะแปลงได้
- YAML เป็นซูเปอร์เซตของ JSON หรือไม่?
- ในทางปฏิบัติใช่ — YAML 1.2 แยกวิเคราะห์เอกสาร JSON ได้แทบทั้งหมด นั่นคือเหตุผลที่การวาง JSON ลงในคอนฟิก YAML มักใช้ได้ แต่ในทางกลับกันไม่จริง: anchor สเกลาร์หลายบรรทัด และแท็กของ YAML ไม่มีคู่เทียบใน JSON จึงถูกกางออกหรือแปลงเป็นสตริงเมื่อแปลง