TOML เป็น JSON
Cargo.toml ของ Rust, pyproject.toml ของ Python, config.toml ของ Hugo: TOML อยู่ทุกที่ในโลกของการตั้งค่ายุคใหม่ แต่เครื่องมือจำนวนมากยังคงพูดได้เฉพาะ JSON วาง TOML ของคุณที่นี่แล้วรับ JSON ที่จัดรูปแบบอย่างเรียบร้อยกลับไป: ส่วน [ตาราง] กลายเป็นออบเจ็กต์ซ้อนกัน บล็อก [[อาร์เรย์ของตาราง]] กลายเป็นอาร์เรย์ของออบเจ็กต์ และวันที่ถูกส่งผ่านเป็นสตริงตามที่เขียนไว้ ตัวแยกวิเคราะห์ครอบคลุมแกนหลักที่ใช้กันทุกวันของ TOML ส่วนข้อจำกัดที่แท้จริง (ค่าหลายบรรทัด ตารางแบบอินไลน์ คีย์แบบมีจุด) แจกแจงไว้อย่างตรงไปตรงมาด้านล่าง
การแปลงทำงานอย่างไร
-
1
วาง TOML ของคุณ
ใส่ข้อความลงในช่องอินพุตแล้วกดปุ่มแปลงเป็น JSON ความคิดเห็น # ที่กินทั้งบรรทัดจะถูกข้ามโดยอัตโนมัติ
-
2
ตารางกลายเป็นออบเจ็กต์
ส่วนหัว `[server.database]` กลายเป็นออบเจ็กต์ JSON ซ้อนกัน โดยชื่อที่คั่นด้วยจุดแต่ละส่วนคือหนึ่งชั้น
-
3
อาร์เรย์ของตารางกลายเป็นอาร์เรย์
บล็อก `[[users]]` สร้างอาร์เรย์ JSON โดยมีหนึ่งออบเจ็กต์ต่อหนึ่งบล็อก
-
4
ค่าสเกลาร์คงชนิดข้อมูลไว้
สตริงในเครื่องหมายคำพูด จำนวนเต็มและทศนิยมฐานสิบแบบเรียบง่าย และ true/false จะกลายเป็นชนิดข้อมูล JSON แท้ ส่วนวันที่ยังคงเป็นสตริงตามที่เขียนไว้ทุกตัวอักษร
-
5
คัดลอก JSON
ผลลัพธ์ถูกจัดรูปแบบด้วยการเยื้อง 4 ช่องว่าง คีย์เรียงตามลำดับเดิม พร้อมคัดลอกได้ทันที
ชนิดข้อมูลถูกจับคู่กันอย่างไร
| ค่า TOML | ค่า JSON | ตัวอย่าง |
|---|---|---|
| สตริง (basic หรือ literal) | สตริง | "hello" → "hello" |
| จำนวนเต็ม (ฐานสิบแบบเรียบง่าย) | ตัวเลข | 42 → 42 |
| ทศนิยม (ฐานสิบแบบเรียบง่าย) | ตัวเลข | 3.14 → 3.14 |
| บูลีน | บูลีน | true → true |
| อาร์เรย์ (บรรทัดเดียว) | อาร์เรย์ | [1, 2, 3] → [1, 2, 3] |
| ตารางที่มีคีย์ | ออบเจ็กต์ | [server] + port = 8080 → "server": {"port": 8080} |
| อาร์เรย์ของตาราง | อาร์เรย์ของออบเจ็กต์ | [[users]] + name = "alice" → "users": [{"name": "alice"}] |
| วันที่และเวลา | สตริง ตามที่เขียน | 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z" |
เอาต์พุตถูกจัดรูปแบบด้วยการเยื้อง 4 ช่องว่างเสมอ อาร์เรย์และออบเจ็กต์จึงกินพื้นที่หลายบรรทัด ตารางด้านบนแสดงค่าในบรรทัดเดียวเพื่อให้อ่านง่าย ลำดับของคีย์ถูกคงไว้ตรงตามที่ปรากฏใน TOML ของคุณ
ตัวอย่างครบทุกขั้น
title = "My App"
[server]
host = "localhost"
port = 8080
[[users]]
name = "alice"
admin = true
จะถูกแปลงเป็น:
{
"title": "My App",
"server": {
"host": "localhost",
"port": 8080
},
"users": [
{
"name": "alice",
"admin": true
}
]
}
TOML ที่รองรับ และข้อจำกัดที่แท้จริง
รองรับ: ส่วนหัว [ตาราง] รวมถึงชื่อส่วนแบบมีจุด, [[อาร์เรย์ของตาราง]], คู่ key = value บรรทัดเดียว, สตริง basic "..." พร้อมอักขระหลีก \n, \t และ \", สตริง literal '...', จำนวนเต็มและทศนิยมฐานสิบแบบเรียบง่าย, true/false, อาร์เรย์บรรทัดเดียว (ซ้อนกันได้), ความคิดเห็น # ทั้งบรรทัด และวันที่ที่ส่งผ่านเป็นสตริง
ไม่รองรับ พร้อมวิธีแก้:
- สตริงหลายบรรทัด (
"""หรือ''') และอาร์เรย์หลายบรรทัดทำให้ตัวแยกวิเคราะห์หยุดพร้อมข้อผิดพลาด ให้รวบค่าไว้ในบรรทัดเดียวก่อน - ตารางแบบอินไลน์ไม่ถูกขยาย:
point = { x = 1, y = 2 }จะออกมาเป็นสตริง"{ x = 1, y = 2 }"ไม่ใช่ออบเจ็กต์ ให้เขียนใหม่เป็นส่วน[point]แยกต่างหาก บรรทัด dependency ใน Cargo.toml อย่างserde = { version = "1.0" }คือกรณีคลาสสิก - คีย์แบบมีจุดทางซ้ายของเครื่องหมายเท่ากับจะยังเป็นคีย์แบนหนึ่งตัว:
server.host = "a"สร้างคีย์"server.host"โดยไม่ซ้อนกัน ให้ใช้ส่วนหัว[server]แทน ส่วน[section.names]แบบมีจุดในส่วนหัวจะซ้อนกันอย่างถูกต้อง - ความคิดเห็นหลังค่าไม่ถูกตัดออก:
port = 8080 # mainจะกลายเป็นสตริง"8080 # main"เก็บความคิดเห็นไว้ในบรรทัดของตัวเอง - รูปแบบตัวเลขนอกเหนือจากฐานสิบแบบเรียบง่ายไม่ถูกรู้จัก:
1_000,0xFF,5e2,+99,infและnanจะออกมาเป็นสตริงในเครื่องหมายคำพูด ให้เขียนเป็น1000,255,500,99 - อักขระหลีก
\uXXXXในสตริง basic ไม่ถูกถอดรหัส ให้วางตัวอักษรจริงแทน
สำหรับเอกสาร TOML 1.0 ฉบับสมบูรณ์ ให้ใช้ตัวแปลงบรรทัดคำสั่งอย่าง toml2json หรือโหลดไฟล์ด้วย tomllib ของ Python แล้วส่งออก JSON จากตรงนั้น
เหมาะกับงานแบบไหน
- ตรวจสอบอย่างรวดเร็ว ชิ้นส่วน TOML ในรูป JSON ระหว่างดีบัก
- ส่งค่าการตั้งค่าง่าย ๆ ให้ linter สคริปต์ หรือเครื่องมือทำบัญชีทรัพยากรที่รับเฉพาะ JSON
- สร้าง fixture JSON สำหรับการทดสอบ จากโน้ต TOML ที่เขียนด้วยมือได้ง่ายกว่า
- ย้ายไฟล์การตั้งค่าขนาดเล็กและแบน ซึ่ง
config.tomlของ Hugo จำนวนมากก็เป็นแบบนั้น
ข้อควรรู้เรื่องการแปลงไปกลับ
- ความคิดเห็นไม่มีวันรอด: JSON ไม่มีไวยากรณ์ความคิดเห็นเลย
- วันที่ยังคงเป็นสตริง: โค้ดปลายทางต้องแยกวิเคราะห์กลับเป็นออบเจ็กต์วันที่เอง
- ตัวเลขขนาดใหญ่: จำนวนเต็มถูกเก็บเป็นค่า 64 บิตในข้อความ JSON แต่ฝั่ง JavaScript จะสูญเสียความแม่นยำเมื่อเกิน 2^53 ระวังไทม์สแตมป์ระดับนาโนวินาทีและ ID ที่เป็นตัวเลข
- ลำดับคีย์ในตัวแปลงนี้คงไว้ตามที่เขียน เครื่องมือ JSON อื่นอาจเรียงคีย์ใหม่เมื่อเขียนเอกสารออกมาอีกครั้ง
ทิศทางย้อนกลับ
JSON → TOML คือเส้นทางที่ยากกว่า เพราะ JSON มีโครงสร้าง (การซ้อนแบบนิรนามลึก ๆ, null) ที่ TOML ไม่มีหรือจัดการต่างออกไป สถานการณ์แปลงไปกลับส่วนใหญ่ต้องปรับแต่งด้วยมือฝั่ง TOML
คำถามที่พบบ่อย
ไม่รอด JSON ไม่มีไวยากรณ์ความคิดเห็น ความคิดเห็น # ทั้งบรรทัดจึงถูกข้ามไปเฉย ๆ ข้อควรระวัง: ความคิดเห็นที่ตามหลังค่าไม่ถูกตัดออก ทำให้ port = 8080 # main กลายเป็นสตริง “8080 # main” ย้ายความคิดเห็นไปไว้บรรทัดของตัวเองก่อนแปลง
ไม่ครบ เครื่องมือครอบคลุมแกนหลักที่ใช้ประจำ: ตารางที่มีชื่อส่วนแบบจุด อาร์เรย์ของตาราง คู่ key = value บรรทัดเดียว สตริงในเครื่องหมายคำพูด ตัวเลขฐานสิบแบบเรียบง่าย บูลีน อาร์เรย์บรรทัดเดียว และความคิดเห็นทั้งบรรทัด ส่วนสตริงและอาร์เรย์หลายบรรทัด ตารางแบบอินไลน์ คีย์แบบมีจุด และรูปแบบตัวเลขอย่าง 1_000 หรือ 0xFF ไม่รองรับ สำหรับเอกสารตามสเปกเต็มให้ใช้เครื่องมือ CLI เช่น toml2json หรือ tomllib ของ Python
ไฟล์การตั้งค่าทั่วไปแปลงเสร็จทันที การแปลงทำงานบนเซิร์ฟเวอร์ของเรา เอกสารขนาดมหึมาจึงถูกจำกัดด้วยขนาดคำขอ สำหรับ TOML หลายเมกะไบต์ ตัวแปลงบรรทัดคำสั่งเหมาะกว่า
ใช่ ตัวแปลงนี้ทำงานฝั่งเซิร์ฟเวอร์: TOML เดินทางไปยังเซิร์ฟเวอร์ของเราผ่าน HTTPS ถูกแปลงที่นั่น แล้วกลับมาในการตอบกลับเดียวกัน เนื้อหาไม่ถูกเก็บไว้หลังจากนั้น มีเพียงตัวนับการใช้งานแบบนิรนามเท่านั้น หลีกเลี่ยงการวางความลับอย่างรหัสผ่านหรือคีย์ API
เครื่องมือที่เกี่ยวข้อง
ตารางอ้างอิง ASCII
ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL
อ้างอิงตัวอักษร HTML
รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ
ตารางอ้างอิงแป้นพิมพ์ลัด
ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux
ตัวตรวจสอบความถูกต้องของ JSON
ตรวจสอบไวยากรณ์ JSON และตรวจจับเครื่องหมายจุลภาคต่อท้าย เครื่องหมายอัญประกาศที่ผิด คีย์ซ้ำ และโครงสร้างที่ผิดรูปแบบ พร้อมระบุตำแหน่งข้อผิดพลาดอย่างแม่นยำ
เครื่องมือตรวจสอบ IBAN
ตรวจสอบความยาวตามประเทศ โครงสร้างภายในประเทศ และเลข MOD 97-10 ของ IBAN ในเบราว์เซอร์ ไม่มีการอัปโหลดและไม่ยืนยันว่าบัญชีมีอยู่จริง
ตัวลดรูปพีชคณิตบูลีน
ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^
เครื่องมือนี้มีให้บริการในภาษาอื่น
- TOML a JSON [ES]
- TOML na JSON [PL]
- TOMLからJSONへ [JA]
- TOML para JSON [PT]
- TOML till JSON [SV]
- TOML sang JSON [VI]
- من TOML إلى JSON [AR]
- TOML en JSON [FR]
- TOML zu JSON [DE]
- TOML ke JSON [ID]
- TOML to JSON [KO]
- TOML naar JSON [NL]
- TOML'dan JSON'a [TR]
- TOML 至 JSON [ZH]
- TOML to JSON [EN]
- TOML in JSON [IT]
- TOML в JSON [RU]