ToolDeck

TOML

2 เครื่องมือ

เครื่องมือ TOML ของ ToolDeck ช่วยให้คุณจัดรูปแบบ ตรวจสอบ และแปลงไฟล์ config TOML ได้โดยตรงในเบราว์เซอร์ — ไม่ต้องติดตั้ง ไม่ต้องสมัครสมาชิก ไม่มีการอัปโหลดข้อมูลไปยังเซิร์ฟเวอร์ใดๆ TOML Formatter จะ parse input TOML ของคุณและ serialize ใหม่พร้อม indentation ที่สม่ำเสมอ การจัดลำดับ key ที่เป็นมาตรฐาน และข้อผิดพลาดการตรวจสอบ inline ที่ระบุปัญหาไวยากรณ์ได้ตรงจุด TOML to JSON Converter แปลงเอกสาร TOML ให้อยู่ในรูปแบบ JSON ที่เทียบเท่า โดยรักษาประเภทข้อมูลรวมถึง datetime, inline table และ array of table เครื่องมือทั้งสองทำงานในฝั่ง client ทั้งหมด ทำให้ไฟล์ config ของคุณ — ซึ่งมักมี credential ฐานข้อมูล, API endpoint และความลับสำหรับ deployment — อยู่บนเครื่องของคุณเท่านั้น หากต้องการแปลงในทิศทางตรงข้าม JSON to TOML Converter ในหมวด JSON จัดการการแปลงนั้น

เครื่องมือ TOML คืออะไร?

TOML (Tom's Obvious, Minimal Language) คือรูปแบบไฟล์ config ที่สร้างขึ้นรอบไวยากรณ์ที่ชัดเจนและไม่คลุมเครือ สร้างโดย Tom Preston-Werner ผู้ร่วมก่อตั้ง GitHub โดย TOML ได้รับการเผยแพร่ครั้งแรกในปี 2013 และเข้าสู่ข้อกำหนด 1.0 ในเดือนมกราคม 2021 รูปแบบนี้แมปตรงกับ hash table โดยไม่คลุมเครือ: ทุกไฟล์ TOML จะกำหนดโครงสร้างแบบต้นไม้ของคู่ key-value ที่จัดเป็น table (ส่วนที่ทำเครื่องหมายด้วย [วงเล็บ]) ต่างจาก YAML ตรงที่ TOML ไม่พึ่งพา indentation สำหรับโครงสร้าง ซึ่งขจัดปัญหาที่เกิดจาก whitespace ได้ทั้งชั้น ต่างจาก JSON ตรงที่ TOML รองรับ comment, ประเภท date/time ในตัว และ string หลายบรรทัด — คุณสมบัติที่ไฟล์ config ต้องการแต่ JSON ไม่ได้ออกแบบมาให้รองรับ

เครื่องมือ TOML ทำให้งานเชิงกลของการอ่าน ตรวจสอบ และแปลงไฟล์ TOML เป็นไปโดยอัตโนมัติ เครื่องมือจัดรูปแบบทำให้ indentation และการจัดลำดับ key เป็นมาตรฐาน เพื่อให้ไฟล์ config อ่านได้ทั่วทั้งทีมแม้ผู้มีส่วนร่วมหลายคนจะแก้ไขไฟล์เดียวกัน เครื่องมือแปลงจะแปลระหว่าง TOML และ JSON ซึ่งมีประโยชน์เมื่อ library หรือ API รับ JSON เป็น input แต่แหล่งข้อมูลหลักของคุณเป็น config TOML การตรวจสอบจะตรวจพบข้อผิดพลาดทาง syntax — วงเล็บปิดที่หายไป key ซ้ำ หรือ datetime literal ที่ไม่ถูกต้อง — ก่อนที่จะทำให้เกิดความล้มเหลวเมื่อแอปพลิเคชันเริ่มต้น

งานเหล่านี้เกิดขึ้นบ่อยในโปรเจกต์ Rust (ซึ่ง Cargo.toml คือ package manifest), Python packaging (pyproject.toml แทนที่ setup.py ในฐานะ build configuration มาตรฐานตาม PEP 518 และ PEP 621), Hugo static site (ซึ่งใช้ TOML สำหรับ site configuration โดยค่าเริ่มต้น) และการตั้งค่า infrastructure ใดๆ ที่จัดเก็บ config ในไฟล์ TOML ข้อกำหนด TOML ดูแลรักษาที่ toml.io และมี parser สำหรับทุกภาษาโปรแกรมหลัก

ทำไมต้องใช้เครื่องมือ TOML บน ToolDeck?

เครื่องมือ TOML ของ ToolDeck parse และประมวลผลทุกอย่างภายใน tab เบราว์เซอร์ของคุณโดยใช้ JavaScript ไม่มีการส่งข้อมูล config ไปยังเซิร์ฟเวอร์ ไม่ต้องสมัครสมาชิก และเครื่องมือทำงานออฟไลน์ได้หลังจากโหลดหน้าครั้งแรก

🔒
เป็นส่วนตัวโดยค่าเริ่มต้น
ไฟล์ config มักมีค่าที่ละเอียดอ่อน — database URL, API key, deployment target ToolDeck ประมวลผล TOML ในฝั่ง client ทั้งหมด ทำให้ไม่มีข้อมูลออกจากเบราว์เซอร์ของคุณ ปลอดภัยสำหรับโปรเจกต์ที่เป็นกรรมสิทธิ์และ config infrastructure ภายใน
ผลตอบรับทันที
วาง TOML แล้วเห็นผลลัพธ์ที่จัดรูปแบบหรือ JSON ได้ทันที ข้อผิดพลาดทาง syntax รายงานพร้อมหมายเลขบรรทัดและคำอธิบาย ไม่ต้องรอติดตั้ง CLI หรือรอขั้นตอน build
🔄
การแปลงประเภทข้อมูลที่แม่นยำ
ตัวแปลง TOML to JSON รักษาประเภทข้อมูลเฉพาะของ TOML อย่าง offset datetime, local date และ local time ให้อยู่ในรูป ISO 8601 string ความแม่นยำของ integer และ float ยังคงอยู่ Array of table แมปตรงกับ JSON array ของ object
🌐
ไม่ต้องติดตั้ง
ทำงานบนอุปกรณ์ใดก็ได้ที่มีเบราว์เซอร์รุ่นใหม่ มีประโยชน์เมื่อตรวจสอบ pull request บนเครื่องที่ไม่มี development environment ที่คุณใช้ปกติ หรือเมื่อต้องการตรวจสอบไฟล์ TOML ของเพื่อนร่วมงานอย่างรวดเร็ว

กรณีการใช้งานเครื่องมือ TOML

การจัดรูปแบบ ตรวจสอบ และแปลง TOML เกิดขึ้นในบทบาทและประเภทโปรเจกต์ที่หลากหลาย นักพัฒนา Rust ทำงานกับ Cargo.toml ทุกวัน นักพัฒนา Python กำหนด build และเครื่องมือผ่าน pyproject.toml วิศวกร DevOps จัดการ config แอปพลิเคชันที่ส่งเป็น TOML งานด้านล่างแสดงให้เห็นว่าเครื่องมือ TOML บนเบราว์เซอร์ประหยัดเวลาได้อย่างไรเมื่อเทียบกับการเขียน script เองหรือติดตั้ง CLI tool

ทำความสะอาด Cargo.toml
หลังจาก merge การเพิ่ม dependency หลายรายการ Cargo.toml ของโปรเจกต์ Rust มีการจัดรูปแบบที่ไม่สม่ำเสมอ ส่งผ่าน TOML Formatter เพื่อทำให้ indentation และลำดับ key เป็นมาตรฐานก่อน commit
แปลง pyproject.toml เป็น JSON
CI pipeline ต้องการ build metadata ในรูปแบบ JSON แต่แหล่งข้อมูลหลักคือ pyproject.toml ใช้ TOML to JSON Converter เพื่อสร้างรูปแบบ JSON และตรวจสอบการแมปก่อนเขียน script การแปลงลงใน pipeline
ย้าย Config
ย้ายแอปพลิเคชันจาก config ที่ใช้ JSON ไปเป็น TOML (หรือในทางกลับกัน) TOML to JSON Converter ช่วยให้คุณเปรียบเทียบสองรูปแบบเคียงกันเพื่อยืนยันว่าประเภทข้อมูล โครงสร้างซ้อนกัน และ array semantics ยังคงอยู่ครบ
ดีบัก Syntax
ไฟล์ config TOML ล้มเหลวในการ parse เมื่อแอปพลิเคชันเริ่มต้นพร้อมข้อความผิดพลาดที่ไม่ชัดเจน วางลงใน TOML Formatter เพื่อรับหมายเลขบรรทัดและคอลัมน์ที่เจาะจงสำหรับข้อผิดพลาดทาง syntax พร้อมคำอธิบายว่า parser คาดหวังอะไร
สร้างเอกสาร
เขียนเอกสารที่มีตัวอย่าง config ทั้งในรูปแบบ TOML และ JSON แปลงตัวอย่าง TOML หลักผ่าน TOML to JSON Converter เพื่อให้ทั้งสองเวอร์ชันซิงก์กันโดยไม่ต้องพิมพ์ด้วยมือ
เรียนรู้ไวยากรณ์ TOML
นักพัฒนาที่เพิ่งเริ่มใช้ TOML สามารถทดลองรูปแบบโดยเขียน TOML ใน TOML Formatter ดูข้อผิดพลาดการตรวจสอบแบบ real-time และเปรียบเทียบโครงสร้างกับผลลัพธ์ที่จัดรูปแบบแล้ว วิธีนี้เร็วกว่าการอ่าน spec เพียงอย่างเดียว

ตารางอ้างอิงประเภทข้อมูล TOML

TOML v1.0 กำหนดประเภทข้อมูลดังต่อไปนี้ แต่ละประเภทแมปกับรูปแบบเฉพาะเมื่อแปลงเป็น JSON ตารางด้านล่างครอบคลุมไวยากรณ์ ตัวอย่าง และพฤติกรรมการแปลงสำหรับแต่ละประเภข TOML

ประเภทไวยากรณ์ตัวอย่างการแมป JSON
String"..." หรือ '...'name = "TOML"JSON string Basic string รองรับ escape sequence (\n, \t, \u) Literal string ('...') ถือ backslash เป็นอักษรตัวอักษร
Integerตัวเลข, 0x, 0o, 0bport = 8080JSON number รองรับเลขฐาน 16 (0xDEAD) ฐาน 8 (0o755) ฐาน 2 (0b1010) และตัวคั่นขีดล่าง (1_000)
Floatตัวเลขที่มี . หรือ epi = 3.14159JSON number รองรับ inf, -inf และ nan (แมปเป็น null หรือ string ใน JSON เนื่องจาก JSON ไม่มี NaN)
Booleantrue / falseenabled = trueJSON boolean ใช้ได้เฉพาะ true และ false ตัวพิมพ์เล็กเท่านั้น
Offset Date-TimeRFC 33392024-01-15T09:30:00ZJSON string (ISO 8601) รวม timezone offset ไม่มีประเภท datetime ในตัวของ JSON
Local Date-Timedate T time2024-01-15T09:30:00JSON string ไม่มีข้อมูล timezone มีประโยชน์สำหรับเวลาตาม wall clock
Local DateYYYY-MM-DD2024-01-15JSON string วันที่โดยไม่มีส่วนของเวลา
Local TimeHH:MM:SS09:30:00JSON string เวลาโดยไม่มีวันที่หรือ timezone
Array[value, ...]ports = [8080, 8443]JSON array Array ของ TOML สามารถมีประเภทข้อมูลผสมกันใน TOML v1.0 แต่ต้องเป็นประเภทเดียวกันใน v0.5
TabletomlCategoryContent.r10Syntax[database]JSON object Standard table ใช้ [วงเล็บ] Inline table ใช้วงเล็บปีกกาในบรรทัดเดียว

ข้อกำหนด TOML v1.0.0 (toml.io) คือเวอร์ชันเสถียรปัจจุบัน Array of table ใช้ [[วงเล็บคู่]] เพื่อกำหนด table entry ซ้ำ ซึ่งแมปกับ JSON array ของ object

วิธีเลือกเครื่องมือ TOML ที่เหมาะสม

ToolDeck มีเครื่องมือสามตัวที่ทำงานกับไฟล์ TOML สองตัวอยู่ในหมวด TOML และหนึ่งตัวอยู่ในหมวด JSON สำหรับการแปลงในทิศทางตรงข้าม เลือกเครื่องมือที่ตรงกับงานของคุณ

  1. 1
    หากคุณต้องการ จัด indent ไฟล์ TOML ใหม่ ทำให้ลำดับ key เป็นมาตรฐาน หรือตรวจสอบไวยากรณ์ TOML พร้อมรายงานข้อผิดพลาดระดับบรรทัดTOML Formatter
  2. 2
    หากคุณต้องการ แปลงไฟล์ config TOML เป็น JSON เพื่อใช้ใน API, script หรือเครื่องมือที่รับ JSON เป็น inputTOML to JSON Converter
  3. 3
    หากคุณต้องการ แปลงเอกสาร JSON เป็นรูปแบบ TOML สำหรับโปรเจกต์ที่ใช้ TOML เป็นมาตรฐาน configJSON to TOML Converter

สำหรับงาน TOML ทั่วไป TOML Formatter จัดการการจัดรูปแบบและการตรวจสอบในขั้นตอนเดียว — วาง TOML ของคุณ แล้วจะได้รับผลลัพธ์ที่สะอาดหรือข้อมูลว่าข้อผิดพลาดทาง syntax อยู่ที่ไหน เมื่อต้องการเชื่อม TOML และ JSON TOML to JSON Converter จะรักษาประเภทข้อมูล TOML ทั้งหมดรวมถึง datetime และ table ซ้อนกัน สำหรับทิศทางตรงข้าม (JSON to TOML) ใช้ JSON to TOML Converter ในหมวด JSON หากกำลังดีบัก config ที่ parse ล้มเหลว เริ่มจาก TOML Formatter: ข้อความผิดพลาดรวมหมายเลขบรรทัดและคำอธิบาย expected token ที่เจาะจงกว่า parser ระดับแอปพลิเคชันส่วนใหญ่รายงาน

คำถามที่พบบ่อย

ความแตกต่างระหว่าง TOML และ YAML คืออะไร?
TOML ใช้ไวยากรณ์วงเล็บที่ชัดเจนสำหรับ table และไม่พึ่งพา indentation สำหรับโครงสร้าง YAML ใช้ indentation ในการกำหนดลำดับชั้น ทำให้ไวต่อข้อผิดพลาดของ whitespace — space เดียวที่ผิดที่สามารถเปลี่ยนโครงสร้างที่ parse ได้ทั้งหมด TOML ยังมีประเภท date/time ในตัวและห้าม key ซ้ำกัน ในขณะที่ YAML ใช้ค่าสุดท้ายเงียบๆ เมื่อ key ปรากฏสองครั้ง TOML นิยมใช้สำหรับ config แอปพลิเคชัน ส่วน YAML พบได้บ่อยกว่าใน Kubernetes manifest และนิยาม CI/CD pipeline ซึ่งการรองรับ multi-document และ anchor/alias มีประโยชน์
ความแตกต่างระหว่าง TOML และ JSON คืออะไร?
JSON คือรูปแบบแลกเปลี่ยนข้อมูลที่ออกแบบสำหรับการสื่อสารระหว่างเครื่อง TOML คือรูปแบบ config ที่ออกแบบให้มนุษย์อ่านและแก้ไข TOML รองรับ comment (บรรทัดที่ขึ้นต้นด้วย #), ประเภท datetime ในตัว, string หลายบรรทัด และ table ที่ลด nesting depth JSON ไม่รองรับ comment ไม่มีประเภทวันที่ และต้องใช้ nested วงเล็บปีกกาอย่างชัดเจน JSON เหมาะสำหรับ API payload และการจัดเก็บข้อมูล TOML เหมาะสำหรับไฟล์ config ที่มนุษย์แก้ไขด้วยมือ
TOML สามารถแสดงโครงสร้างข้อมูล JSON ทั้งหมดได้หรือไม่?
TOML สามารถแสดงโครงสร้าง JSON ส่วนใหญ่ได้ แต่มีบางกรณีที่ยากขึ้น TOML ไม่รองรับค่า null — ไม่มี null ใน TOML ที่เทียบเท่ากับ null ใน JSON key ของ TOML ต้องเป็น string ซึ่งตรงกับ key ของ JSON object array ของ TOML ถูกจำกัดให้เป็นประเภทเดียวกันใน v0.5 แต่ TOML v1.0 อนุญาตให้ array มีประเภทผสมกันได้ JSON object ที่ซ้อนกันลึกอาจยาวใน TOML เพราะแต่ละระดับ nesting ต้องมี table header แยก
โปรเจกต์ไหนบ้างที่ใช้ TOML สำหรับ config?
ระบบ build Cargo ของ Rust ใช้ Cargo.toml เป็น package manifest Python รับเอา pyproject.toml เป็นไฟล์ build config มาตรฐานผ่าน PEP 518 (2016) และ PEP 621 (2020) Hugo ซึ่งเป็น static site generator ใช้ TOML สำหรับ site config โดยค่าเริ่มต้น InfluxDB ใช้ TOML สำหรับ server config ระบบ module ของ Go พิจารณา TOML แต่เลือกรูปแบบของตัวเอง อย่างไรก็ตามโปรเจกต์ Go จำนวนมากยังใช้ TOML สำหรับ config ระดับแอปพลิเคชันผ่าน library อย่าง BurntSushi/toml และ pelletier/go-toml
TOML จัดการ comment อย่างไร?
TOML รองรับ comment ทั้งบรรทัดและ comment ท้ายบรรทัดโดยใช้ตัวอักษร # ทุกอย่างตั้งแต่ # ถึงท้ายบรรทัดจะถูก parser ละเว้น Comment ไม่สามารถอยู่ใน basic string หลายบรรทัดหรือ literal string หลายบรรทัดได้ เมื่อแปลง TOML เป็น JSON comment จะถูกตัดออกเพราะ JSON ไม่มีไวยากรณ์ comment ซึ่งหมายความว่าการแปลงไปกลับจาก TOML → JSON → TOML จะสูญเสีย comment ทั้งหมดจากไฟล์ต้นฉบับ
Array of table ใน TOML คืออะไร?
Array of table ใช้ไวยากรณ์ [[วงเล็บคู่]] เพื่อกำหนด entry ซ้ำของโครงสร้าง table เดียวกัน เช่น [[servers]] ที่ปรากฏสองครั้งจะสร้าง array ที่มี server object สองตัว ใน JSON สิ่งนี้แมปกับ array ของ object Array of table นิยมใช้สำหรับรายการ dependency, นิยาม server หรือ config plugin ที่แต่ละ entry มี key ชุดเดียวกัน
TOML ไวต่อ whitespace หรือไม่?
TOML ไม่ไวต่อ indentation Indentation เป็นเพียงรูปแบบเท่านั้นและไม่ส่งผลต่อการ parse อย่างไรก็ตาม TOML ต้องการ newline เพื่อแยกคู่ key-value — ไม่สามารถใส่สองคู่ key-value ไว้ในบรรทัดเดียวได้ (ยกเว้นใน inline table) Inline table ต้องอยู่ในบรรทัดเดียวและไม่สามารถมี newline ได้ การออกแบบนี้หลีกเลี่ยงข้อบกพร่องที่เกิดจาก indentation ที่พบบ่อยในไฟล์ YAML
ค่า datetime ของ TOML จะเกิดอะไรขึ้นเมื่อแปลงเป็น JSON?
JSON ไม่มีประเภท datetime ในตัว ดังนั้น datetime ของ TOML จึงถูกแปลงเป็น ISO 8601 string Offset datetime (เช่น 2024-01-15T09:30:00Z) จะเก็บ timezone offset ไว้ใน string representation Local datetime, local date และ local time แต่ละตัวจะถูก serialize เป็น string โดยไม่มีข้อมูล timezone การแปลงนี้ไม่สูญเสียข้อมูลในแง่ที่ว่าค่าต้นฉบับสามารถ parse กลับมาจาก string ได้ แต่ JSON consumer ต้องรู้ว่าควรถือ string เหล่านี้เป็นวันที่ ไม่ใช่ข้อความทั่วไป