onlinetools.dev

ตัวแปลง JSON ↔ YAML ↔ TOML

แปลงระหว่าง JSON, YAML และ TOML พร้อมตรวจจับรูปแบบอัตโนมัติ

ทำงานในเครื่อง
loading…
เกี่ยวกับเครื่องมือนี้

แปลงไปมาระหว่าง 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 จึงถูกกางออกหรือแปลงเป็นสตริงเมื่อแปลง
เครื่องมือที่เกี่ยวข้อง