Chuyển đến nội dung

Bộ chuyển đổi JSON ↔ YAML

Bộ chuyển đổi JSON ↔ YAML

Chỉnh sửa JSON và YAML song song với đồng bộ hai chiều tức thì. Hỗ trợ điều chỉnh thụt lề, sắp xếp khóa và tách YAML đa tài liệu. Hữu ích cho cấu hình Kubernetes/Helm/CI và gỡ lỗi API.

Bộ chuyển đổi JSON ↔ YAML

🚀 Bắt đầu nhanh

  • Dán hoặc nhập JSON vào trình chỉnh sửa bên trái và YAML ở bên phải sẽ tự động cập nhật.
  • Bạn cũng có thể nhập YAML ở bên phải và JSON ở bên trái sẽ tự động cập nhật.
  • Đồng bộ hóa hoàn toàn hai chiều. Không cần chuyển đổi chế độ: chỉnh sửa một trong hai bên và bên kia cập nhật ngay lập tức.
  • Sử dụng thanh công cụ trên cùng để đặt thụt lề JSON/YAML, bật sắp xếp khóa và chuyển đổi đầu ra YAML nhiều tài liệu.
  • Nhấn Tab trong trình chỉnh sửa để chèn thụt lề thay vì di chuyển tiêu điểm.
  • Mỗi trình chỉnh sửa đều có nút Sao chép và Xóa ở góc trên bên phải. Xóa một trong hai bên sẽ xóa cả hai bên.

📌 Tình huống sử dụng phổ biến

  • Tác giả Kubernetes: chuyển đổi các bảng kê khai tài nguyên K8 giữa YAML và JSON để kiểm tra cấu trúc từ một trong hai chế độ xem.
  • Gỡ lỗi giá trị Helm: chuyển đổi value.yaml thành JSON để kiểm tra các loại và lồng trong IDE của bạn.
  • Đường dẫn CI/CD: nhanh chóng chuyển đổi các đoạn mã giữa các hành động GitHub (YAML) và các hệ thống CI sử dụng JSON.
  • Gỡ lỗi API: chuyển đổi tải trọng JSON sang YAML để có chế độ xem phân cấp rõ ràng hơn.
  • Di chuyển cấu hình: chuyển đổi hàng loạt tệp cấu hình giữa YAML và JSON.
  • Định dạng và xác thực: xác minh cú pháp JSON/YAML thông qua đồng bộ hóa hai chiều, với vị trí lỗi dòng/cột.

🧭 Gợi ý sử dụng

  • Thụt lề JSON 2 dấu cách hoạt động trong hầu hết các trường hợp; sử dụng 4 khoảng trắng cho các tệp giá trị lồng sâu hoặc Helm.
  • Bật sắp xếp khóa để hiển thị các khóa đối tượng theo thứ tự bảng chữ cái. Cách này giúp so sánh khác biệt cấu hình dễ hơn.
  • Khi gốc JSON là một mảng, hãy bật YAML đa tài liệu để chia từng phần tử thành một tài liệu riêng biệt (---), hữu ích cho các tệp K8s đa tài nguyên.
  • Nếu đầu vào không hợp lệ, trình soạn thảo sẽ hiển thị lỗi với chi tiết dòng/cột; phía bên kia giữ nội dung hợp lệ cuối cùng của nó.
  • Đối với nội dung lớn, trước tiên hãy dán và đợi đồng bộ, sau đó tiếp tục chỉnh sửa để tránh chuyển đổi lại quá mức.

⚠️ Giới hạn & khả năng tương thích

  • Phân tích cú pháp YAML tuân theo thông số YAML 1.2. Một số hành vi dành riêng cho YAML 1.1 (ví dụ: chuyển đổi boolean tự động có/không) có thể khác nhau.
  • Số JSON tuân theo giới hạn JavaScript IEEE 754. Các số nguyên vượt quá độ chính xác an toàn 53 bit có thể mất độ chính xác.
  • Các neo và bí danh YAML (&, *, <<) được mở rộng thành các giá trị cụ thể khi được chuyển đổi sang JSON; tài liệu tham khảo không thể được bảo tồn.
  • Nhận xét YAML bị loại bỏ trong quá trình chuyển đổi vì JSON không hỗ trợ nhận xét.

🔒 Quyền riêng tư & bảo mật

  • Tất cả quá trình xử lý diễn ra cục bộ trong trình duyệt của bạn. Dữ liệu của bạn không bao giờ rời khỏi thiết bị của bạn.

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

Sự khác biệt giữa JSON và YAML là gì và khi nào tôi nên sử dụng chúng?

JSON và YAML có thể biểu thị cùng loại dữ liệu (đối tượng, mảng, chuỗi, số), nhưng cú pháp của chúng khác nhau: • JSON sử dụng dấu ngoặc nhọn/ngoặc và dấu ngoặc kép, có cú pháp chặt chẽ hơn và không hỗ trợ nhận xét. • YAML sử dụng thụt lề để phân cấp, dễ đọc hơn và hỗ trợ nhận xét nhưng nhạy cảm với khoảng trắng. Quy tắc ngón tay cái: • Đối với các API và trao đổi dữ liệu giữa các máy, hãy ưu tiên JSON. • Đối với các cấu hình Kubernetes/Helm/CI mà con người thường chỉnh sửa, hãy ưu tiên YAML. • Bạn có thể chuyển đổi giữa chúng mà không cần thay đổi mô hình dữ liệu.

Tại sao có/không/bật/tắt trong YAML trở thành đúng/sai sau khi chuyển đổi?

Điều này xuất phát từ hành vi cũ của YAML 1.1, trong đó có/không/bật/tắt/y/n có thể được phân tích cú pháp dưới dạng boolean. Công cụ này tuân theo YAML 1.2, trong đó chỉ có giá trị boolean đúng/sai. Nếu bạn cần các giá trị chuỗi, hãy trích dẫn chúng (ví dụ: "có").

Tại sao nhận xét YAML biến mất sau khi chuyển đổi sang JSON?

JSON (RFC 8259) không cho phép bình luận. Vì vậy, các nhận xét YAML không thể được giữ nguyên trong chuyển đổi YAML→JSON và chúng không thể được xây dựng lại khi chuyển đổi trở lại. Giữ lại tệp YAML gốc nếu có ý kiến ​​quan trọng.

--- có nghĩa là gì trong YAML?

--- là bộ phân tách tài liệu của YAML, dùng để lưu trữ nhiều tài liệu độc lập trong một file. Điều này phổ biến trong Kubernetes, trong đó một tệp có thể chứa các định nghĩa Triển khai, Dịch vụ và Bản đồ cấu hình. Công cụ này đọc YAML nhiều tài liệu dưới dạng một mảng JSON và cũng có thể chia mảng JSON thành --- các tài liệu YAML được phân tách.

Tôi nên làm gì nếu độ chính xác về số bị mất sau khi chuyển đổi?

JavaScript sử dụng số có độ chính xác kép IEEE 754. Số nguyên an toàn nằm trong khoảng từ -(2^53-1) đến 2^53-1 (±9007199254740991). Số nguyên lớn hơn (ví dụ: ID bông tuyết hoặc dấu thời gian 64 bit) có thể mất độ chính xác. Để bảo toàn các giá trị chính xác, hãy lưu trữ chúng dưới dạng chuỗi, chẳng hạn như "9007199254740992".

Điều gì xảy ra với các neo YAML (& và *) trong quá trình chuyển đổi?

Neo (&name) và bí danh (*name) là các tính năng tái sử dụng dành riêng cho YAML. JSON không có cơ chế tham chiếu tương đương nên bí danh được mở rộng thành bản sao đầy đủ trong quá trình chuyển đổi. Đây là một phép biến đổi tổn thất và cấu trúc neo ban đầu không thể được khôi phục tự động.