Chuyển đổi YAML ↔ TOML 🔒 Dữ liệu của bạn không rời khỏi trình duyệt.

Chuyển đổi file cấu hình giữa định dạng YAML và TOML.

Ctrl+STải xuống

Về công cụ này

YAML và TOML đều mô tả cấu hình có cấu trúc, chỉ khác cú pháp và nơi thường dùng. YAML thống trị manifest Kubernetes, file Docker Compose và pipeline CI (GitHub Actions, GitLab CI); TOML là định dạng ưa thích cho Cargo.toml của Rust và pyproject.toml của Python. Chuyển cấu hình từ một service Compose sang dự án Cargo — hoặc ngược lại — thường có nghĩa là gõ lại toàn bộ bằng tay. Công cụ chuyển đổi YAML sang TOML trực tuyến này (và ngược lại, TOML sang YAML) chuyển hai chiều tức thì, giữ nguyên bảng lồng nhau, mảng và kiểu dữ liệu.

Chạy bằng thư viện js-yaml và smol-toml, cả hai chỉ tải ở trang này. File cấu hình của bạn không bao giờ rời khỏi trình duyệt — an toàn kể cả với file chứa tên host nội bộ, cổng hay tên môi trường.

Câu hỏi thường gặp

YAML dùng để làm gì, và TOML dùng để làm gì?

YAML là lựa chọn mặc định cho manifest Kubernetes, file Docker Compose và pipeline CI (GitHub Actions, GitLab CI) — nó xử lý tốt cấu trúc lồng sâu. TOML là định dạng mà Cargo.toml của Rust và pyproject.toml của Python sử dụng — đọc giống file .ini hơn và phổ biến ở nơi cần cấu hình phẳng, dễ sửa tay. Bạn thường cần chuyển đổi qua lại khi mang cấu hình từ dự án dùng container sang dự án Rust hoặc Python, hoặc ngược lại.

Chú thích của tôi có còn sau khi chuyển đổi giữa YAML và TOML không?

Không — và đây là một cạm bẫy phổ biến. Cả trình phân tích YAML lẫn TOML đều bỏ qua chú thích khi đọc tài liệu; chỉ dữ liệu được giữ lại. Công cụ này phân tích đầu vào của bạn thành một object trong bộ nhớ rồi tuần tự hóa lại từ đầu, nên mọi chú thích `#` ở cả hai định dạng đều biến mất trong kết quả. Nếu một chú thích ghi lại điều gì quan trọng, hãy chép tay nó lại sau khi chuyển đổi.

Cú pháp array-of-tables ([[section]]) có chuyển đổi qua lại chính xác không?

Có. `[[section]]` của TOML thực chất chỉ là một mảng mà các phần tử của nó là bảng (object). Khi chuyển TOML → YAML, nó trở thành một sequence YAML thông thường gồm các mapping; chuyển sequence đó ngược lại TOML sẽ tái tạo các khối `[[section]]`, vì smol-toml nhận ra "một mảng mà mọi phần tử đều là object thuần" và tự động xuất cú pháp array-of-tables cho nó.

Dữ liệu YAML hoặc TOML của tôi có được tải lên đâu không?

Không. Việc chuyển đổi chạy hoàn toàn trong trình duyệt của bạn bằng thư viện JavaScript js-yaml và smol-toml — bất cứ gì bạn gõ hoặc dán ở đây không bao giờ được gửi tới máy chủ. Điều đó giúp công cụ an toàn ngay cả với file cấu hình chứa tên host nội bộ, placeholder thông tin đăng nhập hay các chi tiết đặc thù của môi trường.

Làm sao để biến cấu hình docker-compose.yml của tôi thành file TOML cho dự án Rust hoặc Python?

Chuyển sang tab 'YAML → TOML', dán phần liên quan trong docker-compose.yml của bạn (ví dụ chỉ khối `environment:` của một service, hoặc một khối cài đặt tùy chỉnh bạn đã thêm), và TOML tương ứng sẽ hiện ngay bên phải — sẵn sàng dán vào Cargo.toml, pyproject.toml, hay bất kỳ file cấu hình `.toml` tùy chỉnh nào ứng dụng của bạn đọc. Lưu ý toàn bộ tài liệu dán vào phải quy về một object duy nhất ở cấp cao nhất; nếu bạn dán cả file compose bắt đầu từ `services:` thì vẫn ổn vì đó là một mapping, nhưng một danh sách trần (như chỉ riêng mảng `ports:`) sẽ báo lỗi vì TOML không có cách nào biểu diễn mảng làm tài liệu gốc.

Tôi có thể chuyển TOML ngược lại YAML, chứ không chỉ YAML sang TOML không?

Có — đây là công cụ chuyển đổi hai chiều. Nhấn tab 'TOML → YAML' (hoặc nhấn Hoán đổi sau khi chạy YAML → TOML) để dán TOML và nhận lại YAML tương ứng, với độ rộng thụt lề bạn chọn được áp dụng cho kết quả. Cả hai chiều đều dùng chung cách tiếp cận 'phân tích rồi tuần tự hóa lại', nên bảng lồng nhau, mảng và array-of-tables đều chuyển đổi đúng ở cả hai chiều.