Công cụ này làm gì
Ba việc trong một: YAML sang JSON, JSON sang YAML, và định dạng YAML, tức đọc tệp rồi viết lại theo một kiểu thống nhất. Mỗi lần chuyển cũng là một lần kiểm tra: lỗi YAML được báo kèm dòng, cột và nút đưa con trỏ tới đúng chỗ. Bộ phân tích được viết riêng cho trang này và chạy trong trình duyệt, nên tệp cấu hình có mật khẩu bên trong không rời khỏi máy bạn.
Hiểu được những gì
Phần YAML 1.2 thông dụng trong tệp cấu hình: ánh xạ và danh sách lồng nhau (kể cả kiểu - key: value và danh sách viết cùng mức thụt lề với khóa), [a, b] và {a: 1} viết trên một dòng, chuỗi thường, 'nháy đơn' và "nháy kép" với mọi chuỗi thoát, khối | và > cùng chỉ báo -, +, neo (&tên), bí danh (*tên), khóa gộp <<, các thẻ chuẩn (!!str, !!int...) và nhiều tài liệu ngăn bởi --- (thành một mảng JSON).
Không hỗ trợ và được báo lỗi thay vì đoán: khóa phức (? key), thẻ tùy biến như !Ref của CloudFormation, chỉ thị %TAG. Chú thích bị bỏ, vì JSON không có chú thích. Bộ phân tích theo lược đồ lõi YAML 1.2 và được kiểm tra với các ví dụ ở chương 2 của đặc tả YAML 1.2.2 cùng một thư viện YAML độc lập.
Những bẫy YAML 1.1 được cảnh báo
Nhiều công cụ vẫn đọc YAML theo luật 1.1 (PyYAML, thư viện Ruby và Go cũ, một số hệ thống CI):
- `NO`, `yes`, `on`, `off` là chuỗi trong YAML 1.2 nhưng là boolean trong 1.1. Danh sách mã quốc gia có Na Uy biến thành
false ("vấn đề Na Uy"). - `0755` là số thập phân 755 trong 1.2 nhưng là số bát phân 493 trong 1.1, nạn nhân điển hình là quyền tệp.
- `1:20` từng là số hệ 60 (80) trong 1.1, nay là chuỗi.
Công cụ cảnh báo kèm số dòng, và khi chuyển JSON sang YAML luôn đặt những chuỗi như vậy trong nháy ("NO", "0755", "12:30") để mọi bộ đọc hiểu giống nhau.
Chuyển đổi an toàn
Thứ tự khóa được giữ nguyên, số 20 chữ số không bị làm tròn; .inf và .nan không có dạng JSON nên thành null kèm ghi chú. Tab không được dùng để thụt lề trong YAML, đây là lỗi hay gặp nhất sau khi sao chép. Tài liệu bung bí danh quá lớn (tấn công "billion laughs") bị dừng thay vì làm treo tab. Đọc thêm các bẫy YAML và cách chuyển đổi an toàn, hoặc kiểm tra phía JSON bằng công cụ định dạng JSON.