ตัวแปลง JSON เป็น TOML
TOML เป็นรูปแบบการกำหนดค่าที่พบได้ใน Cargo, pyproject, uv, poetry และเครื่องมือ CLI อีกมากมายที่เพิ่มขึ้นเรื่อยๆ เครื่องมือแปลงนี้จะรับเอกสาร JSON และสร้างผลลัพธ์เป็น TOML ที่ถูกต้อง ได้แก่ ตารางที่มีหัวข้อ [section], ตารางแบบซ้อนที่ใช้คีย์แบบจุด (dot keys), ชุดของตารางสำหรับอาร์เรย์ของอ็อบเจกต์ในรูปแบบ JSON, รวมถึงการใส่คำอธิบาย (quote) ที่เหมาะสมสำหรับสตริงที่มีตัวอักษรพิเศษ
วิธีแปลง JSON เป็น TOML
-
1
วางข้อมูลในรูปแบบ JSON
ออบเจกต์ในระดับสูงสุด (TOML ไม่สามารถแทนอาร์เรย์ในระดับสูงสุดได้)
-
2
เลือกรูปแบบตาราง
ใช้ตารางแบบฝังสำหรับวัตถุขนาดเล็ก และหัวข้อมาตรฐาน `[section]` สำหรับวัตถุขนาดใหญ่
-
3
เลือกเวอร์ชัน TOML
TOML เวอร์ชัน 1.0 เป็นมาตรฐานที่ได้รับการสนับสนุนอย่างแพร่หลาย ในขณะที่เวอร์ชัน 1.1 ยังอยู่ในขั้นร่าง แต่มีการเพิ่มฟีเจอร์บางอย่างเข้าไป
-
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 และโปรแกรมแก้ไข
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Konverter JSON ke TOML [ID]
- Chuyển đổi từ JSON sang TOML [VI]
- Convertidor de JSON a TOML [ES]
- Convertisseur JSON en TOML [FR]
- JSON에서 TOML로의 변환기 [KO]
- JSON naar TOML-converter [NL]
- JSON till TOML-konverterare [SV]
- JSONからTOMLへの変換ツール [JA]
- محوّل JSON إلى TOML [AR]
- JSON zu TOML Konverter [DE]
- Konwerter JSON do TOML [PL]
- Conversor de JSON para TOML [PT]
- Convertitore da JSON a TOML [IT]
- Конвертер JSON в TOML [RU]
- JSON'tan TOML'e Çevirici [TR]
- JSON 至 TOML 转换器 [ZH]
- JSON to TOML Converter [EN]