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ì

JSON đầu ra

Cách dùng YAML sang JSON

  1. Dán YAML vào ô bên trái hoặc mở tệp .yaml/.yml.
  2. 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ả.
  3. Đá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.
  4. 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 ^.
  5. 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-02 trở 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: no nghĩa là false, nên mã quốc gia NO của Na Uy biến mất. Tương tự với yes, on, off, y và n. YAML 1.2 chỉ coi true và false là boolean.
  • Số bát phân: 0755 là bát phân trong 1.1 nhưng là số thập phân thường trong 1.2, vốn dùng 0o755. Hãy đặt nháy cho quyền tệp để an toàn.
  • Số cơ số 60: trong 1.1, 22:30 có 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?
Không. Việc phân tích diễn ra trong trình duyệt bằng thư viện mã nguồn mở js-yaml. Cấu hình chứa secret hay hostname nội bộ không bao giờ rời khỏi máy của bạn.
Vì sao YAML của tôi báo lỗi “bad indentation”?
Cấu trúc lồng nhau trong YAML được xác định bằng dấu cách, và không được dùng tab để thụt lề. Hãy đảm bảo các khóa cùng cấp thẳng hàng chính xác và các phần tử danh sách (-) được thụt lề nhất quán dưới khóa cha.
Chú thích YAML sẽ ra sao?
Chúng bị loại bỏ. JSON không có cú pháp chú thích, nên không thể giữ lại chú thích. Chuyển ngược lại sang YAML cũng không khôi phục được chúng.
Vì sao <code>no</code> vẫn là chuỗi?
Công cụ này tuân theo YAML 1.2, nơi chỉ 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?
Có. Mỗi resource phân tách bằ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.

Công cụ liên quan