Cách chuyển JSON sang YAML
- Dán JSON hoặc mở file; YAML sẽ hiện ra trong lúc bạn gõ. Chọn thụt lề 2 hoặc 4 dấu cách.
- Để chuyển theo chiều ngược lại, đổi chiều sang YAML → JSON và dán YAML vào.
- Sao chép kết quả hoặc tải về dưới dạng file
.yamlhoặc.json.
So sánh JSON và YAML
| JSON | YAML | |
|---|---|---|
| Cấu trúc | dấu ngoặc nhọn {} và ngoặc vuông [] | thụt lề và các mục danh sách - |
| Chuỗi | luôn nằm trong dấu nháy kép | chỉ dùng dấu nháy khi cần |
| Chú thích | không được phép | # comment |
| Văn bản nhiều dòng | escape \n | block literal với | |
| Mục đích sử dụng thường gặp | API và trao đổi dữ liệu | file cấu hình |
YAML 1.2 là tập cha của JSON, nên một tài liệu JSON vốn đã là YAML hợp lệ. Tuy vậy, công cụ sẽ xuất ra kiểu block dễ đọc hơn.
Những giá trị cần đặt trong dấu nháy trong YAML
Một số từ không có dấu nháy sẽ bị đổi kiểu trong YAML: yes, no, on và off là boolean trong các parser YAML 1.1, 007 và 1e3 là số, còn null hoặc ~ nghĩa là null. Đây chính là “vấn đề Na Uy” (Norway problem) nổi tiếng: mã quốc gia NO biến thành false khi không được đặt trong dấu nháy. Công cụ tự động thêm dấu nháy cho những chuỗi như vậy, nên khi đọc lại, YAML cho ra đúng dữ liệu ban đầu.
YAML được hỗ trợ khi chuyển YAML → JSON
Trình phân tích hiểu loại YAML thường dùng trong file cấu hình và API: mapping và danh sách dạng block, chuỗi thường, chuỗi trong nháy đơn và nháy kép, block nhiều dòng | và >, tập hợp inline [ ] và { }, chú thích và dấu phân tách tài liệu ---. Anchor (&), alias (*) và tag tùy chỉnh sẽ được báo là không hỗ trợ, kèm số dòng. Với file chứa nhiều tài liệu, chỉ tài liệu đầu tiên được chuyển đổi.
Câu hỏi thường gặp
YAML có phải là tập cha của JSON không?
YAML 1.2 được thiết kế là tập cha của JSON, nên hầu như mọi file JSON cũng là YAML hợp lệ. Điều ngược lại thì không đúng: YAML có chú thích, anchor và block nhiều dòng mà JSON không có.
Chú thích có được giữ lại khi chuyển YAML sang JSON không?
Không. JSON không có chú thích nên chúng sẽ bị bỏ đi. Khóa, giá trị và thứ tự của chúng được giữ nguyên.
Tại sao YAML của tôi bị báo lỗi?
Nguyên nhân thường gặp là dùng tab để thụt lề (YAML chỉ cho phép dấu cách), các mục trong cùng một danh sách hoặc mapping không bắt đầu ở cùng một cột, và thiếu dấu cách sau dấu hai chấm. Thông báo lỗi sẽ cho bạn biết dòng bị lỗi.
Giá trị YAML được chuyển sang kiểu gì trong JSON?
Theo core schema của YAML 1.2: true/false thành boolean, null và ~ thành null, số thông thường thành số JSON, còn những từ như yes vẫn là chuỗi. Hãy đặt các mã như "007" trong dấu nháy trong YAML để giữ chúng ở dạng văn bản.