แปลง JSON เป็น TOML
การแปลงไฟล์ตั้งค่า JSON เป็น TOML ช่วยให้แก้ไขได้ง่ายขึ้น พร้อมทั้งรักษาลำดับชั้นข้อมูลคีย์-ค่าแบบมีโครงสร้างไว้ครบถ้วน
การเปรียบเทียบรูปแบบและข้อกำหนดทางเทคนิค
| ข้อกำหนด | JSON | TOML |
|---|---|---|
| ประเภท MIME | application/ | application/ |
| ประเภท | ออบเจ็กต์ข้อมูลแบบมีโครงสร้าง | ไฟล์กำหนดค่าแบบเรียบง่าย |
| การบีบอัด | ไม่มี (สตรีมข้อความ) | ไม่มี (ข้อความ UTF-8) |
| ข้อกำหนดมาตรฐาน | IETF RFC 8259 / ECMA-404 | TOML v1.0.0 Specification |
| ส่วนหัวที่ระบุลายเซ็นไฟล์ | 7B (\{) or 5B (\[) JSON root delimiter | [section] key = "value" |
ภาพรวมรูปแบบและการใช้งาน
นักพัฒนามักจัดเก็บการตั้งค่าแอปพลิเคชันไว้ในไฟล์ JSON เนื่องจากเว็บเบราว์เซอร์และรันไทม์ JavaScript สามารถแยกวิเคราะห์ไฟล์เหล่านี้ได้ทันทีโดยไม่ต้องใช้ตัวช่วยเพิ่มเติม อย่างไรก็ตาม JSON ต้องใช้เครื่องหมายวรรคตอนจำนวนมาก เช่น วงเล็บปีกกาและเครื่องหมายคำพูดคู่ ซึ่งทำให้การแก้ไขด้วยตนเองทำได้ยากและเสี่ยงต่อข้อผิดพลาดทางไวยากรณ์ การแปลงไฟล์เหล่านี้เป็น TOML จะช่วยแก้ปัญหานี้ด้วยเลย์เอาต์ที่สะอาดตากว่า โดยอาศัยการกำหนดค่าคีย์-แวลูแบบธรรมดาและส่วนหัวตารางที่ชัดเจน เครื่องมือซอฟต์แวร์ เช่น ยูทิลิตี้ CLI ที่สร้างด้วย Rust, ระบบบิลด์ของ Python และตัวจัดการแพ็กเกจสมัยใหม่ นิยมใช้ TOML เนื่องจากมนุษย์สามารถอ่านและเขียนได้ง่ายกว่า เมื่อย้ายการตั้งค่าโปรเจกต์จากสภาพแวดล้อมที่เน้นเว็บไปยังเวิร์กโฟลว์การเขียนโปรแกรมระบบ การเปลี่ยนรูปแบบการตั้งค่าจะช่วยให้มั่นใจได้ว่าจะเข้ากันได้ดีขึ้นกับเครื่องมือต่างๆ เช่น Cargo และ Pyproject.toml
ข้อกำหนดทางเทคนิคและรายละเอียดตัวแปลงสัญญาณ
ไฟล์คอนฟิก JSON ใช้ MIME type เป็น application/json ในรูปแบบสตรีมข้อความที่ไม่ได้บีบอัด ซึ่งแสดงออบเจ็กต์ข้อมูลที่มีโครงสร้างด้วยวงเล็บปีกกาและวงเล็บก้ามปู ส่วนคอนฟิก TOML ใช้ MIME type เป็น application/toml ซึ่งเป็นรูปแบบไฟล์การตั้งค่าข้อความ UTF-8 ที่เรียบง่ายที่ออกแบบมาเพื่อให้แมปกับแฮชเทเบิลได้อย่างชัดเจน ทั้งสองรูปแบบไม่มีการบีบอัดข้อมูล หมายความว่าไฟล์จะถูกจัดเก็บเป็นข้อความธรรมดา และไม่มีรูปแบบไบต์เริ่มต้น (magic byte) เนื่องจากระบุได้ด้วยการเข้ารหัสข้อความและนามสกุลไฟล์แทนที่จะเป็นเลขไบต์ไบนารี
ความเข้ากันได้ของระบบปฏิบัติการและเบราว์เซอร์
JSON ทำงานได้โดยตรงในเว็บเบราว์เซอร์และเซิร์ฟเวอร์รันไทม์สมัยใหม่ส่วนใหญ่ ส่วน TOML ออกแบบมาสำหรับไฟล์ตั้งค่าที่แอปฝั่งแบ็กเอนด์และเครื่องมือบิลด์อ่าน มากกว่าจะใช้ประมวลผลโดยตรงในเบราว์เซอร์ เมื่อประมวลผลด้วยตัวแยกวิเคราะห์ข้อความที่เหมาะสม ทั้งสองรูปแบบเข้ากันได้กับระบบปฏิบัติการสมัยใหม่ส่วนใหญ่ รวมถึง Windows, macOS และ Linux
เคล็ดลับการใช้งาน
ควรตรวจสอบประเภทข้อมูลของคุณเสมอหลังจากการแปลง เนื่องจาก TOML กำหนดให้ต้องแยกแยะระหว่างตัวเลขจำนวนเต็มและตัวเลขทศนิยมอย่างเข้มงวด ในขณะที่ JSON จะปฏิบัติกับตัวเลขทุกประเภทเหมือนกัน
คำถามที่พบบ่อย
จะแปลงไฟล์คอนฟิก JSON เป็น TOML โดยไม่ให้คุณภาพลดลงได้อย่างไร?
การแปลงนี้อาจทำให้ข้อมูลสูญหาย: TOML ไม่มีค่า null ดังนั้นค่า null ใน JSON จะกลายเป็นสตริงว่าง ค่าอื่นที่รองรับจะแปลงเป็นค่า TOML ที่เทียบเท่ากัน โปรดตรวจสอบผลลัพธ์ก่อนใช้งาน
ความแตกต่างระหว่างคอนฟิก JSON และ TOML คืออะไร?
JSON ใช้เครื่องหมายวงเล็บปีกกา วงเล็บก้ามปู และเครื่องหมายคำพูดซ้อนกันเพื่อกำหนดโครงสร้างข้อมูล ในขณะที่ TOML ใช้เครื่องหมายวงเล็บเหลี่ยมสำหรับหัวข้อตารางและการกำหนดค่าด้วยข้อความธรรมดาเพื่อให้เลย์เอาต์สะอาดและอ่านง่ายขึ้น