ตัวแปลง JSON เป็น TOML

TOML เป็นรูปแบบการกำหนดค่าที่พบได้ใน Cargo, pyproject, uv, poetry และเครื่องมือ CLI อีกมากมายที่เพิ่มขึ้นเรื่อยๆ เครื่องมือแปลงนี้จะรับเอกสาร JSON และสร้างผลลัพธ์เป็น TOML ที่ถูกต้อง ได้แก่ ตารางที่มีหัวข้อ [section], ตารางแบบซ้อนที่ใช้คีย์แบบจุด (dot keys), ชุดของตารางสำหรับอาร์เรย์ของอ็อบเจกต์ในรูปแบบ JSON, รวมถึงการใส่คำอธิบาย (quote) ที่เหมาะสมสำหรับสตริงที่มีตัวอักษรพิเศษ

วิธีแปลง JSON เป็น TOML

  1. 1

    วางข้อมูลในรูปแบบ JSON

    ออบเจกต์ในระดับสูงสุด (TOML ไม่สามารถแทนอาร์เรย์ในระดับสูงสุดได้)

  2. 2

    เลือกรูปแบบตาราง

    ใช้ตารางแบบฝังสำหรับวัตถุขนาดเล็ก และหัวข้อมาตรฐาน `[section]` สำหรับวัตถุขนาดใหญ่

  3. 3

    เลือกเวอร์ชัน TOML

    TOML เวอร์ชัน 1.0 เป็นมาตรฐานที่ได้รับการสนับสนุนอย่างแพร่หลาย ในขณะที่เวอร์ชัน 1.1 ยังอยู่ในขั้นร่าง แต่มีการเพิ่มฟีเจอร์บางอย่างเข้าไป

  4. 4

    คัดลอกไฟล์ TOML

    วางไฟล์ลงในไฟล์ `.toml` ของคุณ, เช่น Cargo, pyproject, uv, poetry หรือไฟล์กำหนดค่าใดๆ ที่รองรับรูปแบบ TOML

ตัวอย่าง

ข้อมูลที่ป้อนเข้ามา:

{
  "project": { "name": "hyperion", "version": "1.0.0" },
  "dependencies": { "django": "4.2", "redis": "^5.0" },
  "servers": [
    { "host": "h1.example.com", "port": 443 },
    { "host": "h2.example.com", "port": 443 }
  ]
}

ผลลัพธ์:

[project]
name = "hyperion"
version = "1.0.0"

[dependencies]
django = "4.2"
redis = "^5.0"

[[servers]]
host = "h1.example.com"
port = 443

[[servers]]
host = "h2.example.com"
port = 443

การจับคู่รูปแบบ

JSON TOML
สตริง "quoted" (หรือ 'literal' สำหรับสตริงที่ไม่มีตัวอักษรพิเศษ)
จำนวนเต็ม 42
ตัวเลข 3.14
ตัวแปรชนิดบูลีน true / false
null ไม่สามารถแสดงได้, TOML ไม่มีค่า null (ให้ละเว้นคีย์นั้น)
วันที่ตามมาตรฐาน ISO 1979-05-27 (วันที่ท้องถิ่นของ TOML)
วันที่และเวลาตามมาตรฐาน ISO 1979-05-27T07:32:00Z
ชุดข้อมูลประเภทเดียวกัน [1, 2, 3]
ชุดข้อมูลแบบผสม ยังคงอนุญาตใช้ได้ แต่ไม่เป็นไปตามแนวทางทั่วไป
ชุดของอ็อบเจกต์ [[name]] ... ชุดของตาราง
วัตถุ เฮดเดอร์หรือข้อมูลที่อยู่ภายในของ [section]

ข้อกำหนดเฉพาะสำหรับ TOML

  • ตารางต้องไม่ขัดแย้งกัน: คีย์ไม่สามารถเป็นทั้งค่าและหัวตารางในเอกสารเดียวกันได้
  • ชุดตารางใช้วงเล็บคู่: [[servers]] หมายถึง “เริ่มต้นองค์ประกอบใหม่ของชุดข้อมูล servers
  • คีย์แบบจุด ช่วยให้คุณเขียน project.author.name = "..." ได้โดยไม่ต้องสร้างหัวตาราง
  • ความคิดเห็นจะเริ่มต้นด้วย # และประกอบด้วยเพียงบรรทัดเท่านั้น

การจัดการข้อมูลที่เป็นศูนย์

TOML ไม่มี null ตัวเลือก:

  • ไม่ระบุคีย์, เป็นวิธีที่ตรงกับความหมายมากที่สุด โดยที่ “ไม่มีค่า” มีความหมายเท่ากับ “null”
  • แทนที่ด้วยสตริงว่าง, เหมาะสม หากสตริงว่างไม่ใช่ค่าที่ถูกต้องเลย
  • ใช้ค่าตัวชี้วัด (sentinel value) เช่น "__null__" หรือค่าที่คล้ายกัน โดยให้โค้ดของคุณเป็นผู้ตีความ

ตัวแปลงจะกำหนดค่าโดยอัตโนมัติให้ไม่รวมคีย์ที่เป็น null และจะแจ้งเตือนเมื่อมีการดำเนินการดังกล่าว

ข้อผิดพลาดที่พบบ่อย

  • อาร์เรย์ JSON ระดับสูงสุด: [1, 2, 3] ที่อยู่ที่รากของ JSON จะไม่สามารถแปลงเป็นเอกสาร TOML ที่ถูกต้องได้ ควรห่อข้อมูลนี้ไว้ในออบเจกต์ เช่น { "items": [1, 2, 3] }
  • การผสมหัวข้อในตารางโดยใช้การกำหนดค่าแบบอินไลน์ เมื่อคุณเขียนค่า [project] แล้ว คีย์ทุกตัวถัดไปในส่วนนั้นจะถูกจัดอยู่ภายใต้ project จนกระทั่งพบหัวข้อถัดไป
  • คีย์ที่มีตัวอักษรพิเศษ: "api-key" ถือว่าถูกต้อง (เมื่อใช้เครื่องหมายอัญประกาศ) แต่ api-key หากไม่มีเครื่องหมายอัญประกาศ จะถือเป็นข้อผิดพลาดในการวิเคราะห์โค้ด TOML
  • โดยสมมติว่าลำดับข้อมูลยังคงถูกรักษาไว้ โปรแกรมแปลง TOML โดยทั่วไปสามารถรักษาลำดับของส่วนหัว (header) ภายในตารางได้ แต่ลำดับของคีย์ภายในตารางไม่ได้รับการรับประกันในทุกการนำไปใช้งาน

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

TOML ถูกออกแบบมาให้สามารถแก้ไขได้โดยมนุษย์ ไม่ว่าจะเป็นการเพิ่มความคิดเห็น การตัดสินใจว่าจะใช้หรือไม่ใช้กฎเกณฑ์การใส่จุดคำข้อย่อยที่ซับซ้อนเกินไป หรือการแบ่งเนื้อหาออกเป็นส่วนต่างๆ ในขณะที่ JSON ถูกออกแบบมาเพื่อการแลกเปลี่ยนข้อมูลระหว่างเครื่องจักรโดยเฉพาะ ระบบนิเวศของเครื่องมือต่างๆ เช่น Cargo และ PyProject ก็เลือกใช้ TOML เพราะมีเหตุผลเฉพาะเจาะจง

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

ไม่ใช่วิธีโดยตรง, เอกสาร TOML ต้องเป็นตาราง (ออบเจกต์) ที่ตำแหน่งรากของโครงสร้างข้อมูล ให้ห่ออาร์เรย์ของคุณไว้ภายในออบเจกต์ ({ "items": [...] }) และเครื่องแปลงจะสร้างอาร์เรย์ของตารางในรูปแบบ [[items]] ขึ้นมา

ใช่ ผลลัพธ์ที่ได้สอดคล้องกับมาตรฐาน TOML 1.0 ซึ่งเป็นมาตรฐานที่เครื่องมือทั้งสองใช้งาน สำหรับการเพิ่มเติมเฉพาะเครื่องมือ (เช่น ส่วนย่อย tool.poetry) ให้จัดรูปแบบข้อมูล JSON ตามความเหมาะสม โดยตัวแปลงจะรักษาโครงสร้างการซ้อนกันของข้อมูลไว้อย่างครบถ้วน

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

ตัวตรวจสอบอีเมล

ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ

เครื่องสร้างตัวอักษรสุ่ม

สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน

เครื่องมือสร้าง EditorConfig

สร้างไฟล์ .editorconfig ด้วยกฎสไตล์และขนาดการเยื้อง การจบบรรทัด ชุดอักขระ และช่องว่างของคุณ เพื่อให้การจัดรูปแบบสอดคล้องกันในทุก IDE และโปรแกรมแก้ไข

เครื่องมือนี้มีให้บริการในภาษาอื่น