ToolDeck

TOML

2 công cụ

Các công cụ TOML của ToolDeck cho phép bạn định dạng, xác thực và chuyển đổi tệp cấu hình TOML trực tiếp trên trình duyệt — không cần cài đặt, không cần tài khoản, không có dữ liệu nào được tải lên máy chủ. TOML Formatter phân tích cú pháp đầu vào TOML của bạn và tuần tự hóa lại với thụt lề nhất quán, sắp xếp khóa chuẩn hóa, và lỗi xác thực nội tuyến chỉ ra chính xác vị trí lỗi cú pháp. TOML to JSON Converter chuyển đổi tài liệu TOML sang dạng JSON tương đương, giữ nguyên các kiểu dữ liệu bao gồm datetime, inline table và mảng bảng. Cả hai công cụ đều chạy hoàn toàn phía client, vì vậy tệp cấu hình của bạn — thường chứa thông tin xác thực cơ sở dữ liệu, endpoint API và bí mật triển khai — được giữ nguyên trên máy của bạn. Nếu bạn cần chuyển đổi theo chiều ngược lại, JSON to TOML Converter trong danh mục JSON sẽ xử lý chuyển đổi đó.

Công Cụ TOML Là Gì?

TOML (Tom's Obvious, Minimal Language) là định dạng tệp cấu hình được xây dựng xung quanh cú pháp rõ ràng, không mơ hồ. Được tạo bởi Tom Preston-Werner, đồng sáng lập GitHub, TOML được phát hành lần đầu vào năm 2013 và đạt đến đặc tả phiên bản 1.0 vào tháng 1 năm 2021. Định dạng này ánh xạ không mơ hồ sang bảng băm: mỗi tệp TOML định nghĩa một cây các cặp khóa-giá trị được tổ chức thành các bảng (các phần được đánh dấu bằng [dấu ngoặc vuông]). Không giống YAML, TOML không dựa vào thụt lề để xác định cấu trúc, điều này loại bỏ hoàn toàn một lớp lỗi phân tích cú pháp liên quan đến khoảng trắng. Không giống JSON, TOML hỗ trợ chú thích, kiểu dữ liệu date/time tự nhiên và chuỗi nhiều dòng — các tính năng mà tệp cấu hình cần nhưng JSON chưa bao giờ được thiết kế để cung cấp.

Các công cụ TOML tự động hóa công việc cơ học là đọc, xác thực và chuyển đổi tệp TOML. Công cụ định dạng chuẩn hóa thụt lề và thứ tự khóa để tệp cấu hình luôn dễ đọc trong nhóm, ngay cả khi nhiều người đóng góp cùng chỉnh sửa một tệp. Công cụ chuyển đổi dịch giữa TOML và JSON, hữu ích khi một thư viện hoặc API yêu cầu đầu vào JSON nhưng nguồn thông tin chính xác của bạn là cấu hình TOML. Xác thực bắt các lỗi cú pháp — thiếu dấu ngoặc đóng, khóa bị trùng lặp hoặc ký tự datetime không hợp lệ — trước khi chúng gây lỗi khi khởi động ứng dụng.

Các tác vụ này xuất hiện thường xuyên trong các dự án Rust (nơi Cargo.toml là tệp kê khai gói), đóng gói Python (pyproject.toml thay thế setup.py như cấu hình build tiêu chuẩn trong PEP 518 và PEP 621), các trang web tĩnh Hugo (sử dụng TOML cho cấu hình trang mặc định) và bất kỳ thiết lập hạ tầng nào lưu trữ cấu hình trong tệp TOML. Đặc tả TOML được duy trì tại toml.io, và các bộ phân tích cú pháp tồn tại cho mọi ngôn ngữ lập trình phổ biến.

Tại Sao Dùng Công Cụ TOML Trên ToolDeck?

Các công cụ TOML của ToolDeck phân tích và xử lý mọi thứ bên trong tab trình duyệt của bạn bằng JavaScript. Không có dữ liệu cấu hình nào được truyền tới máy chủ, không cần tài khoản, và các công cụ hoạt động ngoại tuyến sau lần tải trang đầu tiên.

🔒
Riêng tư theo mặc định
Tệp cấu hình thường chứa các giá trị nhạy cảm — URL cơ sở dữ liệu, khóa API, đích triển khai. ToolDeck xử lý TOML hoàn toàn phía client, vì vậy không có gì rời khỏi trình duyệt của bạn. An toàn cho các dự án độc quyền và cấu hình hạ tầng nội bộ.
Phản hồi tức thì
Dán TOML vào, xem ngay đầu ra đã định dạng hoặc JSON. Lỗi cú pháp được báo cáo kèm số dòng và mô tả. Không cần chờ đợi công cụ CLI cài đặt hay bước build hoàn tất.
🔄
Chuyển đổi kiểu dữ liệu chính xác
Trình chuyển đổi TOML sang JSON giữ nguyên các kiểu dữ liệu đặc trưng của TOML như offset datetime, ngày cục bộ và giờ cục bộ dưới dạng chuỗi ISO 8601. Độ chính xác số nguyên và số thực được duy trì. Mảng bảng ánh xạ chính xác sang mảng JSON của các đối tượng.
🌐
Không cần cài đặt
Hoạt động trên bất kỳ thiết bị nào có trình duyệt hiện đại. Hữu ích khi bạn đang xem xét pull request trên một máy không có môi trường phát triển thông thường, hoặc khi bạn cần nhanh chóng xác thực tệp TOML của đồng nghiệp.

Các Trường Hợp Sử Dụng Công Cụ TOML

Định dạng, xác thực và chuyển đổi TOML xuất hiện trong các vai trò và loại dự án khác nhau. Lập trình viên Rust làm việc với Cargo.toml hàng ngày. Lập trình viên Python cấu hình build và công cụ thông qua pyproject.toml. Kỹ sư DevOps quản lý cấu hình ứng dụng được đóng gói dưới dạng TOML. Các tác vụ dưới đây cho thấy nơi công cụ TOML trên trình duyệt tiết kiệm thời gian so với việc viết script dùng một lần hoặc cài đặt công cụ CLI.

Dọn dẹp Cargo.toml
Sau khi merge nhiều phần bổ sung dependency, Cargo.toml của dự án Rust có định dạng không nhất quán. Chạy qua TOML Formatter để chuẩn hóa thụt lề và thứ tự khóa trước khi commit.
pyproject.toml sang JSON
Một pipeline CI cần metadata build ở định dạng JSON, nhưng nguồn thông tin chính xác là pyproject.toml. Dùng TOML to JSON Converter để tạo biểu diễn JSON và xác minh ánh xạ trước khi đưa vào script chuyển đổi trong pipeline của bạn.
Di chuyển cấu hình
Chuyển ứng dụng từ cấu hình JSON sang TOML (hoặc ngược lại). TOML to JSON Converter cho phép bạn so sánh hai biểu diễn cạnh nhau để xác nhận rằng kiểu dữ liệu, cấu trúc lồng nhau và ngữ nghĩa mảng được giữ nguyên.
Gỡ lỗi cú pháp
Tệp cấu hình TOML không phân tích được khi khởi động ứng dụng với thông báo lỗi không rõ ràng. Dán vào TOML Formatter để nhận số dòng và cột cụ thể cho lỗi cú pháp, cùng mô tả về những gì bộ phân tích cú pháp mong đợi.
Tạo tài liệu
Viết tài liệu bao gồm ví dụ cấu hình ở cả định dạng TOML và JSON. Chuyển đổi ví dụ TOML chuẩn qua TOML to JSON Converter để cả hai phiên bản luôn đồng bộ mà không cần sao chép thủ công.
Học cú pháp TOML
Lập trình viên mới làm quen với TOML có thể thử nghiệm với định dạng bằng cách viết TOML trong TOML Formatter, xem lỗi xác thực theo thời gian thực và so sánh cấu trúc với đầu ra đã định dạng. Cách này nhanh hơn chỉ đọc đặc tả.

Tham Chiếu Các Kiểu Dữ Liệu TOML

TOML v1.0 định nghĩa các kiểu dữ liệu sau đây. Mỗi kiểu ánh xạ sang một biểu diễn cụ thể khi chuyển đổi sang JSON. Bảng dưới đây bao gồm cú pháp, ví dụ và hành vi chuyển đổi cho từng kiểu TOML.

KiểuCú phápVí dụÁnh xạ JSON
Chuỗi"..." hoặc '...'name = "TOML"Chuỗi JSON. Chuỗi cơ bản hỗ trợ chuỗi thoát (\n, \t, \u). Chuỗi ký tự ('...') xử lý dấu gạch chéo ngược như ký tự thông thường.
Số nguyênchữ số, 0x, 0o, 0bport = 8080Số JSON. Hỗ trợ hệ thập lục phân (0xDEAD), hệ bát phân (0o755), hệ nhị phân (0b1010) và dấu phân cách gạch dưới (1_000).
Số thựcchữ số với . hoặc epi = 3.14159Số JSON. Hỗ trợ inf, -inf và nan (ánh xạ sang null hoặc chuỗi trong JSON, vì JSON không có NaN).
Booleantrue / falseenabled = trueBoolean JSON. Chỉ chữ thường true và false là hợp lệ.
Offset Date-TimeRFC 33392024-01-15T09:30:00ZChuỗi JSON (ISO 8601). Bao gồm múi giờ. JSON không có kiểu datetime tự nhiên.
Local Date-Timedate T time2024-01-15T09:30:00Chuỗi JSON. Không có thông tin múi giờ. Hữu ích cho giờ đồng hồ.
Local DateYYYY-MM-DD2024-01-15Chuỗi JSON. Ngày không có thành phần giờ.
Local TimeHH:MM:SS09:30:00Chuỗi JSON. Giờ không có ngày hoặc múi giờ.
Mảng[giá_trị, ...]ports = [8080, 8443]Mảng JSON. Mảng TOML có thể không đồng nhất trong TOML v1.0 nhưng phải đồng nhất trong v0.5.
BảngtomlCategoryContent.r10Syntax[database]Đối tượng JSON. Bảng tiêu chuẩn dùng [dấu ngoặc vuông]. Bảng inline dùng dấu ngoặc nhọn trên một dòng.

Đặc tả TOML v1.0.0 (toml.io) là phiên bản ổn định hiện tại. Mảng bảng dùng [[dấu ngoặc kép]] để định nghĩa các mục bảng lặp lại, ánh xạ sang mảng JSON của các đối tượng.

Cách Chọn Công Cụ TOML Phù Hợp

ToolDeck có ba công cụ làm việc với tệp TOML. Hai công cụ nằm trong danh mục TOML, và một công cụ nằm trong danh mục JSON cho chiều chuyển đổi ngược lại. Chọn công cụ phù hợp với tác vụ của bạn.

  1. 1
    Nếu bạn cần thụt lề lại tệp TOML, chuẩn hóa thứ tự khóa, hoặc xác thực cú pháp TOML với báo cáo lỗi theo dòngTOML Formatter
  2. 2
    Nếu bạn cần chuyển đổi tệp cấu hình TOML sang JSON để dùng trong API, script hoặc công cụ yêu cầu đầu vào JSONTOML to JSON Converter
  3. 3
    Nếu bạn cần chuyển đổi tài liệu JSON sang định dạng TOML cho các dự án dùng TOML làm tiêu chuẩn cấu hìnhJSON to TOML Converter

Với công việc TOML hàng ngày, TOML Formatter xử lý định dạng và xác thực trong một bước — dán TOML của bạn vào, và nó sẽ tạo ra đầu ra sạch hoặc cho bạn biết chính xác vị trí lỗi cú pháp. Khi bạn cần kết nối TOML và JSON, TOML to JSON Converter giữ nguyên tất cả các kiểu dữ liệu TOML bao gồm datetime và bảng lồng nhau. Cho chiều ngược lại (JSON sang TOML), dùng JSON to TOML Converter trong danh mục JSON. Nếu bạn đang gỡ lỗi cấu hình không phân tích được, hãy bắt đầu với TOML Formatter: các thông báo lỗi của nó bao gồm số dòng và mô tả token mong đợi cụ thể hơn những gì hầu hết các bộ phân tích cú pháp TOML ở tầng ứng dụng báo cáo.

Câu Hỏi Thường Gặp

Sự khác biệt giữa TOML và YAML là gì?
TOML sử dụng cú pháp dấu ngoặc vuông rõ ràng cho bảng và không dựa vào thụt lề để xác định cấu trúc. YAML sử dụng thụt lề để định nghĩa hệ thống phân cấp, khiến nó nhạy cảm với lỗi khoảng trắng — một khoảng trắng đặt sai vị trí có thể thay đổi hoàn toàn cấu trúc được phân tích. TOML cũng có kiểu date/time tự nhiên và cấm khóa trùng lặp, trong khi YAML im lặng sử dụng giá trị cuối cùng khi một khóa xuất hiện hai lần. TOML thường được ưa chuộng hơn cho cấu hình ứng dụng, trong khi YAML phổ biến hơn trong manifest Kubernetes và định nghĩa pipeline CI/CD nơi tính năng hỗ trợ đa tài liệu và anchor/alias của nó hữu ích.
Sự khác biệt giữa TOML và JSON là gì?
JSON là định dạng trao đổi dữ liệu được thiết kế cho giao tiếp giữa các máy. TOML là định dạng cấu hình được thiết kế cho con người đọc và chỉnh sửa. TOML hỗ trợ chú thích (các dòng bắt đầu bằng #), kiểu datetime tự nhiên, chuỗi nhiều dòng và các bảng giảm độ sâu lồng nhau. JSON không hỗ trợ chú thích, không có kiểu ngày, và yêu cầu lồng nhau rõ ràng bằng dấu ngoặc nhọn. JSON là lựa chọn đúng cho payload API và lưu trữ dữ liệu; TOML là lựa chọn đúng cho các tệp cấu hình mà con người chỉnh sửa trực tiếp.
TOML có thể biểu diễn tất cả cấu trúc dữ liệu JSON không?
TOML có thể biểu diễn hầu hết các cấu trúc JSON, nhưng có một số trường hợp ngoại lệ. TOML không hỗ trợ giá trị null — không có tương đương TOML của JSON null. Khóa TOML phải là chuỗi, phù hợp với khóa đối tượng JSON. Mảng TOML bị hạn chế kiểu đồng nhất trong v0.5, nhưng TOML v1.0 cho phép mảng kiểu hỗn hợp. Các đối tượng JSON lồng sâu có thể trở nên dài dòng trong TOML vì mỗi cấp độ lồng nhau yêu cầu tiêu đề bảng riêng.
Các dự án nào sử dụng TOML cho cấu hình?
Hệ thống build Cargo của Rust dùng Cargo.toml làm tệp kê khai gói. Python đã áp dụng pyproject.toml làm tệp cấu hình build tiêu chuẩn thông qua PEP 518 (2016) và PEP 621 (2020). Hugo, trình tạo trang web tĩnh, dùng TOML cho cấu hình trang mặc định. InfluxDB dùng TOML cho cấu hình máy chủ. Hệ thống module Go đã xem xét TOML nhưng chọn định dạng riêng của mình; tuy nhiên, nhiều dự án Go vẫn dùng TOML cho cấu hình ở tầng ứng dụng thông qua các thư viện như BurntSushi/toml và pelletier/go-toml.
TOML xử lý chú thích như thế nào?
TOML hỗ trợ chú thích toàn dòng và cuối dòng sử dụng ký tự #. Mọi thứ từ # đến cuối dòng đều bị bộ phân tích cú pháp bỏ qua. Chú thích không thể xuất hiện bên trong chuỗi cơ bản nhiều dòng hoặc chuỗi ký tự nhiều dòng. Khi chuyển đổi TOML sang JSON, chú thích bị loại bỏ vì JSON không có cú pháp chú thích. Điều này có nghĩa là một chuyến khứ hồi từ TOML sang JSON và trở lại TOML sẽ mất tất cả chú thích từ tệp gốc.
Mảng bảng trong TOML là gì?
Mảng bảng dùng cú pháp [[dấu ngoặc kép]] để định nghĩa các mục lặp lại của cùng một cấu trúc bảng. Ví dụ, [[servers]] xuất hiện hai lần tạo ra một mảng với hai đối tượng server. Trong JSON, điều này ánh xạ sang một mảng đối tượng. Mảng bảng thường được sử dụng cho danh sách dependency, định nghĩa máy chủ hoặc cấu hình plugin nơi mỗi mục có cùng tập hợp khóa.
TOML có nhạy cảm với khoảng trắng không?
TOML không nhạy cảm với thụt lề. Thụt lề chỉ mang tính thẩm mỹ và không ảnh hưởng đến việc phân tích cú pháp. Tuy nhiên, TOML yêu cầu xuống dòng để phân tách các cặp khóa-giá trị — bạn không thể đặt hai cặp khóa-giá trị trên cùng một dòng (trừ bên trong bảng inline). Bảng inline phải vừa trên một dòng và không được chứa xuống dòng. Thiết kế này tránh các lỗi dựa trên thụt lề thường gặp trong tệp YAML.
Điều gì xảy ra với giá trị datetime TOML khi chuyển đổi sang JSON?
JSON không có kiểu datetime tự nhiên, vì vậy các datetime TOML được chuyển đổi sang chuỗi ISO 8601. Các offset datetime (như 2024-01-15T09:30:00Z) giữ nguyên múi giờ trong biểu diễn chuỗi. Local datetime, ngày cục bộ và giờ cục bộ đều được tuần tự hóa dưới dạng chuỗi không có thông tin múi giờ. Chuyển đổi không mất mát theo nghĩa là giá trị gốc có thể được phân tích lại từ chuỗi, nhưng trình sử dụng JSON phải biết xử lý các chuỗi này như ngày tháng chứ không phải văn bản tùy ý.