Bộ chuyển đổi YAML sang JSON
Dán YAML bên trái, nhận JSON bên phải. Chạy hoàn toàn trong trình duyệt của bạn — không cần tải lên hoặc đăng ký.
- Dán YAML của bạn vào vùng văn bản bên trái.
- Bấm "Chuyển sang JSON". Đầu ra xuất hiện ở bên phải.
- Sao chép kết quả hoặc bấm Tải xuống để lưu dưới dạng data.json.
- Nếu chuyển đổi thất bại, thông báo lỗi sẽ chỉ ra dòng có vấn đề.
Công cụ này làm gì?
Chuyển tài liệu YAML 1.2 sang JSON tương đương. Mapping trở thành đối tượng, sequence trở thành mảng, các giá trị vô hướng được định kiểu thành số, boolean, null hoặc chuỗi theo quy tắc YAML. Anchor và alias được giải quyết trong quá trình chuyển. Luồng nhiều tài liệu (phân tách bằng `---`) được làm phẳng thành một mảng tài liệu.
Ví dụ
Đầu vào YAML:
name: Ada
tags:
- math
- logic
active: true Đầu ra JSON:
{
"name": "Ada",
"tags": [
"math",
"logic"
],
"active": true
} Lỗi YAML thường gặp và cách khắc phục
YAML nhạy cảm với khoảng trắng, là nguồn gốc của hầu hết các thông báo "phân tích thất bại". Bộ phân tích chỉ ra dòng và cột của lỗi — đây là các mẫu cần tìm.
- Tab thay vì khoảng trắng. YAML 1.2 cấm tab cho thụt lề. Thay mỗi tab bằng khoảng trắng — hầu hết trình soạn thảo có lệnh "chuyển tab thành khoảng trắng".
- Mức thụt lề lẫn lộn. Một con thụt 2 khoảng trắng dưới một anh em thụt 4 khoảng trắng sẽ thất bại. Chọn một độ rộng thụt lề (thường 2 khoảng trắng) và dùng nhất quán toàn tài liệu.
- Chuỗi trông giống boolean. Trong YAML 1.1, `yes`, `no`, `on`, `off` được phân tích thành boolean — gây bất ngờ trong mã quốc gia (cái bẫy "NO") và chuỗi phiên bản. Trích dẫn giá trị: `country: "NO"`. js-yaml mặc định YAML 1.2 đã sửa, nhưng đầu vào thực tế vẫn gặp sự cố.
- Ký tự đặc biệt không có dấu nháy. Giá trị bắt đầu bằng `- `, `:`, `?`, `&`, `*`, `!`, `|`, `>`, `\'`, `"`, `%`, `@`, `` ` `` cần đặt trong dấu nháy. Mẫu an toàn nhất: trích dẫn bất kỳ chuỗi nào có dấu chấm câu.
- Dấu nháy không kết thúc. Thiếu `"` hoặc `\'` đóng làm bộ phân tích coi phần còn lại của tệp như một phần của chuỗi đến dấu nháy tiếp theo — thường tạo ra một số dòng gây nhầm lẫn xa lỗi thực sự.
- Anchor / alias không khớp. Alias (`*name`) tham chiếu một anchor không xác định (`&name`) gây ra lỗi phân tích. Kiểm tra rằng mỗi alias có một anchor khớp được khai báo sớm hơn trong tài liệu.
Câu hỏi thường gặp
Có hỗ trợ những điểm kỳ quặc của YAML 1.1 như "vấn đề Na Uy" không?
Không — và điều này là cố ý. Chúng tôi dùng js-yaml ở chế độ YAML 1.2, nơi `NO` không trích dẫn được phân tích thành chuỗi "NO" thay vì boolean false. Nếu bạn có đầu vào phụ thuộc boolean YAML 1.1, hãy trích dẫn rõ ràng trước khi dán. Trộn lẫn hai đặc tả trong một công cụ sẽ âm thầm dịch sai dữ liệu của bạn.
Anchor và alias YAML xảy ra gì?
Chúng được giải quyết trong quá trình chuyển đổi. JSON kết quả chứa các giá trị trùng lặp dưới dạng dữ liệu đơn giản — anchor không tồn tại trong JSON vì JSON không có cú pháp tham chiếu tương đương. Nếu cần giữ tham chiếu, JSON không phải định dạng đích phù hợp.
Tôi có thể chuyển tệp YAML đa tài liệu không?
Có. Tệp YAML chứa nhiều tài liệu phân tách bằng `---` được chuyển thành mảng JSON, mỗi tài liệu trở thành một phần tử của mảng. Nếu tệp của bạn là tài liệu duy nhất, nó được chuyển thành một đối tượng hoặc giá trị JSON ở cấp cao nhất.
Tại sao chuỗi ngày của tôi xuất ra ở định dạng ISO?
YAML có kiểu timestamp bản địa (`2025-12-31`). Bộ phân tích đọc nó như Date của JavaScript, được tuần tự hóa thành chuỗi ISO 8601 trong JSON. Để giữ văn bản literal gốc, hãy trích dẫn giá trị trong YAML của bạn: `release: "2025-12-31"`.
Có an toàn cho cấu hình YAML nhạy cảm không?
Có. 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à chuyển đổi bởi JavaScript trên trang này, không gửi đến máy chủ nào. Không nhật ký, không phân tích trên chính đầu vào, không lưu giữ. Xác nhận trong công cụ phát triển của trình duyệt: không có yêu cầu mạng nào khi bấm Chuyển.
Có thể xử lý tệp YAML lớn cỡ nào?
Đến giới hạn bộ nhớ trình duyệt của bạn, nhưng giao diện textarea bắt đầu cảm thấy chậm trên ~10 MB YAML. Với đầu vào lớn hơn, chuyển đổi theo từng phần hoặc dùng cùng thư viện (js-yaml) trên dòng lệnh.