Chuyển YAML sang JSON
Dán YAML và nhận lại JSON, với anchor và merge key đã được giải quyết và đúng dòng của mọi lỗi cú pháp.
Chạy hoàn toàn trong trình duyệt của bạn
- Đầu vào
- 0
- Đầu ra
- 0
- Thay đổi
- 0%
Đầu vào tối đa khoảng 10 MB. Công cụ đọc YAML 1.2 chỉ với các kiểu chuẩn; các tag tùy chỉnh như !!python/object bị từ chối, không được thực thi.
Cách chuyển YAML sang JSON
- Dán YAML của bạn vào ô, hoặc nhấn Chèn mẫu.
- Chọn 2 dấu cách, 4 dấu cách, tab hoặc Thu gọn cho bố cục JSON.
- Nếu YAML có lỗi cú pháp, bạn sẽ thấy dòng và cột của nó. Nếu không, hãy sao chép JSON hoặc tải xuống dưới dạng tệp
.json.
Từ YAML sang JSON
YAML và JSON mô tả cùng một loại dữ liệu: mapping, danh sách và giá trị đơn giản. YAML do con người viết, dùng thụt lề thay cho dấu ngoặc nhọn, có chú thích và các lối tắt như anchor; JSON là thứ mà hầu hết chương trình và API mong đợi. Việc chuyển đổi giữa chúng rất phổ biến khi một manifest Kubernetes, tệp Compose hay mô tả OpenAPI phải được đưa vào thứ chỉ đọc JSON.
Một số tính năng của YAML không có tương đương trong JSON, nên bộ chuyển đổi giải quyết chúng. Anchor (&base) đánh dấu một khối mà alias (*base) có thể dùng lại, và merge key (<<) sao chép các mục của một mapping vào mapping khác; trong JSON mỗi cái đó trở thành một bản sao đầy đủ. Chú thích bị bỏ, vì JSON không chứa được chúng. Tệp có nhiều tài liệu ngăn cách bằng --- trở thành một mảng JSON.
Quy tắc kiểu theo YAML 1.2: true và false là boolean, null và ~ là null, số là số, và mọi thứ khác, kể cả yes và 2024-05-01, là văn bản. Lỗi cú pháp kèm dòng và cột, và các nguyên nhân thường gặp nhất là dùng tab để thụt lề, một khóa lặp lại trong cùng mapping, và một giá trị không được thụt lề bên dưới khóa của nó.
Mẹo
- Cần đi theo chiều ngược lại? JSON sang YAML đặt các giá trị như "yes" trong dấu nháy để chúng không bị đổi nghĩa.
- Kiểm tra hoặc làm gọn kết quả bằng Định dạng và kiểm tra JSON.
- Có dữ liệu dạng bảng? CSV sang JSON xử lý bảng tính.
Câu hỏi thường gặp
YAML của tôi có bị tải lên không?
Không. Bộ phân tích YAML được tải từ trang web này vào lần đầu bạn dán gì đó và chạy trong trình duyệt của bạn. Cấu hình có chứa mật khẩu hay khóa không được gửi đi đâu cả.
Tại sao yes vẫn là văn bản "yes"?
Công cụ này theo YAML 1.2, trong đó chỉ true và false là boolean. Các từ yes, no, on và off vẫn là chuỗi, tránh được cái gọi là vấn đề Na Uy, khi mã quốc gia NO bị biến thành false bởi các bộ phân tích YAML 1.1. Nếu bên dùng dữ liệu của bạn là bộ phân tích YAML 1.1, nó có thể đọc các từ đó khác đi.
Ngày và timestamp được xử lý thế nào?
Một giá trị như 2024-05-01 được giữ làm chuỗi "2024-05-01". JSON không có kiểu ngày, và chuyển nó thành số hay định dạng khác sẽ làm mất thông tin.
Còn số nguyên rất lớn thì sao?
Số nguyên vượt quá 9.007.199.254.740.991 (253 - 1) được ghi từng chữ số thay vì bị làm tròn, nên một ID như 12345678901234567890 được giữ nguyên. Lưu ý rằng chương trình đọc JSON đó sau này bằng số JavaScript thông thường sẽ làm tròn nó.
Anchor, alias và merge key có được hỗ trợ không?
Có. Anchor &name và alias *name được mở rộng, và <<: *name gộp một mapping vào mapping khác. Vì JSON không có tham chiếu, mỗi alias được ghi đầy đủ.
Giới hạn alias và mức trần 20 MB là gì?
Một tệp YAML nhỏ có thể dùng các alias mở rộng thành thứ khổng lồ, gọi là alias bomb. Tệp có hơn 10.000 alias bị từ chối, và việc chuyển đổi dừng lại nếu JSON vượt quá 20 MB, để thẻ của bạn không bị treo.