Bộ chuyển đổi JSON sang TOML
Dán đối tượng JSON bên trái, nhận TOML bên phải. Tuân thủ đặc tả nghiêm ngặt qua @iarna/toml. Không tải lên.
- Dán đối tượng JSON vào vùng văn bản bên trái.
- Bấm "Chuyển sang TOML". Cấp cao nhất phải là đối tượng JSON — không phải mảng.
- Sao chép hoặc tải xuống đầu ra TOML.
- Đối với danh sách bản ghi, dùng mảng bảng TOML — bao bằng `{ items: [...] }` trước.
Công cụ này làm gì?
Chuyển đối tượng JSON thành tài liệu tuân thủ TOML 1.0 qua @iarna/toml. Đối tượng lồng nhau trở thành tiêu đề `[section]`; mảng đối tượng trở thành khối array-of-tables `[[items]]`; chuỗi, số, boolean và chuỗi datetime ISO 8601 ánh xạ tới các nguyên thủy TOML. Đầu ra được sắp xếp theo thứ tự chuẩn — khóa xuất hiện trước các bảng con để tương thích với bộ phân tích TOML nghiêm ngặt.
Ví dụ
Đầu vào JSON:
{
"name": "Ada",
"active": true,
"address": {
"city": "London"
}
} Đầu ra TOML:
name = "Ada"
active = true
[address]
city = "London" Cạm bẫy thường gặp khi chuyển JSON sang TOML
TOML có quy tắc cấp cao hơn nghiêm ngặt hơn JSON. Các mẫu dưới đây giải thích vì sao một giá trị JSON "lẽ ra phải hoạt động" có thể thất bại.
- Mảng cấp cao nhất. TOML không thể biểu diễn mảng JSON cấp cao nhất. Bao bọc nó: `{"items": [...]}`. Kết quả trở thành mảng bảng TOML dưới `[[items]]`.
- Vô hướng cấp cao nhất. Một tài liệu JSON trần `42` hoặc `"hello"` không có khóa để gắn vào trong TOML. Bao bọc trong một đối tượng: `{"value": 42}`.
- Giá trị null. TOML không có kiểu null. Bộ tuần tự bỏ qua hoàn toàn các khóa có giá trị JSON là null. Nếu bạn cần biểu diễn "không có gì rõ ràng", hãy dùng chuỗi rỗng `""` hoặc giá trị canh gác, tùy thuộc vào mã hạ nguồn.
- Mảng kiểu hỗn hợp. TOML 1.0 cho phép `[1, "two"]`, nhưng bộ phân tích kế thừa 0.5 thì không. Nếu TOML của bạn phải đi vòng qua công cụ 0.5, hãy giữ mảng đồng nhất trong JSON trước khi chuyển.
- Khóa có dấu chấm trong đầu ra TOML. Một khóa JSON như `"my.key"` trở thành đường dẫn "khóa chấm" TOML, mà bộ phân tích TOML sẽ diễn giải thành lồng nhau. Để giữ một dấu chấm theo nghĩa đen trong tên khóa, bộ tuần tự đặt nó trong dấu nháy: `"my.key" = ...` — nhưng người tiêu thụ vẫn có thể phân tích nó như đường dẫn.
- NaN / Infinity. TOML 1.0 hỗ trợ literal `nan`, `inf`, `-inf`. JSON không biểu diễn những giá trị này — chúng thường đến dưới dạng chuỗi `"NaN"`, `"Infinity"`, v.v. Chuyển thủ công nếu bạn cần các giá trị float đặc biệt TOML thực sự.
Câu hỏi thường gặp
Ngày được biểu diễn thế nào?
Ngày JSON là chuỗi ISO 8601, ví dụ `"2026-04-26T12:00:00Z"`. Bộ tuần tự giữ chúng dưới dạng chuỗi trong TOML — không phải dưới dạng kiểu datetime bản địa. Để có datetime TOML bản địa, bạn cần tiền xử lý và phát ra giá trị với dấu hiệu kiểu chính xác ở phía JavaScript.
Đối tượng lồng sâu có được làm phẳng không?
Không — chúng trở thành tiêu đề lồng `[a.b.c]`. Mỗi mức lồng trở thành đường dẫn tiêu đề nối bằng dấu chấm. Đối với cấu trúc rất sâu, đầu ra có thể có dòng tiêu đề dài; đó chỉ là cách TOML thể hiện chiều sâu.
Thứ tự khóa có được giữ không?
Phần lớn. Bộ tuần tự chuẩn hóa thứ tự để các nguyên thủy đứng trước các bảng con (quy tắc TOML). Trong mỗi cấp, thứ tự chèn JSON được giữ.
Làm thế nào để có bảng inline TOML ở đầu ra?
Bạn không thể — bộ tuần tự luôn dùng tiêu đề khối `[section]`, không bao giờ bảng inline. Nếu cần đầu ra inline, hậu xử lý kết quả. Bảng inline là tính năng dễ đọc của TOML, không phải dạng dữ liệu khác.
JSON của tôi có được tải lên không?
Không. Mọi thứ chạy trong trình duyệt của bạn — đầu vào của bạn được phân tích và tuần tự bởi JavaScript trên trang này và không bao giờ gửi đến máy chủ.
Tôi có thể đi vòng JSON → TOML → JSON không?
Đối với các kiểu được hỗ trợ (chuỗi, số, boolean, đối tượng lồng, mảng đối tượng), có. Đi vòng mất giá trị null (TOML không có null) và có thể chuẩn hóa thứ tự khóa.