Chuyển YAML sang JSON
Dán YAML (manifest Kubernetes, Docker Compose, cấu hình CI) và nhận JSON gọn gàng ngay lập tức. Lỗi được chỉ ra đúng dòng kèm dấu đánh dấu.
Chạy trên trình duyệtKhông cần đăng kýKhông tải lên gì
Cách dùng YAML sang JSON
- Dán YAML vào ô bên trái hoặc mở tệp
.yaml/.yml. - JSON xuất hiện bên phải ngay khi bạn gõ. Chọn 2 dấu cách, 4 dấu cách hoặc tab cho kết quả.
- Đánh dấu Sắp xếp khóa để sắp xếp khóa theo bảng chữ cái. Điều này hữu ích khi so sánh cấu hình.
- Nếu YAML không hợp lệ, thanh trạng thái hiển thị dòng và cột, và các dòng gây lỗi xuất hiện bên dưới kèm dấu
^. - Sao chép hoặc tải xuống JSON, hoặc bấm Đảo chiều để chuyển ngược lại sang YAML.
YAML ánh xạ sang JSON như thế nào
JSON là tập con của YAML 1.2, nên mọi mapping YAML trở thành object JSON, mọi sequence trở thành mảng, và các scalar trở thành chuỗi, số, boolean hoặc null. Các tính năng chỉ có trong YAML được xử lý trong quá trình chuyển đổi:
- Chú thích (
# …) bị loại bỏ, vì JSON không có chú thích. - Anchor và alias (
&base,*base,<<: *base) được mở rộng thành bản sao đầy đủ. - Timestamp như
2024-01-02trở thành chuỗi ISO 8601. - Chuỗi nhiều dòng (khối literal
|và folded>) trở thành chuỗi thường với escape\n.
YAML nhiều tài liệu
Một tệp có thể chứa nhiều tài liệu YAML phân tách bằng ---, điều thường thấy trong manifest Kubernetes. JSON không có cấu trúc tương đương, nên công cụ trả về một mảng JSON với mỗi phần tử là một tài liệu và báo điều đó trên thanh trạng thái. Một dấu --- đơn lẻ ở cuối sẽ được bỏ qua.
Những bẫy giữa YAML 1.1 và 1.2
Công cụ này tuân theo YAML 1.2, đặc tả hiện hành. Nhiều công cụ cũ (PyYAML, Psych của Ruby, một số phiên bản Kubernetes và Ansible) vẫn đọc theo YAML 1.1, nơi các quy tắc khác đi:
- Vấn đề Na Uy: trong YAML 1.1,
country: nonghĩa làfalse, nên mã quốc giaNOcủa Na Uy biến mất. Tương tự vớiyes,on,off,yvàn. YAML 1.2 chỉ coitruevàfalselà boolean. - Số bát phân:
0755là bát phân trong 1.1 nhưng là số thập phân thường trong 1.2, vốn dùng0o755. Hãy đặt nháy cho quyền tệp để an toàn. - Số cơ số 60: trong 1.1,
22:30có thể được hiểu là số 1350. Hãy đặt nháy cho giờ và ánh xạ port như"8080:80".
Chiều JSON → YAML tự động đặt nháy cho các chuỗi dễ nhầm ('no', 'on', 'y'), nên YAML tạo ra được đọc giống nhau ở cả hai phiên bản.
Câu hỏi thường gặp
YAML của tôi có bị tải lên đâu không?
Vì sao YAML của tôi báo lỗi “bad indentation”?
-) được thụt lề nhất quán dưới khóa cha.Chú thích YAML sẽ ra sao?
Vì sao <code>no</code> vẫn là chuỗi?
true/false là boolean. Các trình phân tích YAML 1.1 cũ sẽ biến no, yes, on và off thành boolean (“vấn đề Na Uy”).Tôi có thể chuyển manifest Kubernetes có nhiều resource không?
--- trở thành một phần tử của mảng JSON đầu ra, sẵn sàng cho jq hoặc kubectl apply -f -, lệnh này cũng chấp nhận danh sách JSON.