🌐 VI

🔄 Bộ chuyển đổi YAML ↔ JSON / CSV

Chuyển đổi YAML và JSON hai chiều. Hữu ích khi đưa file cấu hình (docker-compose, GitHub Actions, k8s manifests) sang JSON để kiểm tra bằng chương trình, hoặc chuyển JSON sang YAML dễ đọc cho con người. Tab JSON↔CSV chuyển dữ liệu mảng phẳng thành CSV sẵn sàng cho bảng tính.

HƯỚNG DẪN

Tìm hiểu thêm

01

1. Khi nào dùng YAML và khi nào dùng JSON

JSON được tối ưu cho trao đổi dữ liệu máy với máy (phản hồi API, cấu hình đã lưu) - cú pháp chặt chẽ giúp giảm lỗi phân tích. YAML dựa trên thụt lề, hỗ trợ chú thích (#) và dễ đọc với con người, vì vậy nó phổ biến trong file cấu hình: docker-compose.yml, workflow GitHub Actions, manifest Kubernetes, playbook Ansible. Hãy dùng công cụ này để chuyển YAML config sang JSON cho xử lý bằng chương trình, hoặc chuyển dữ liệu JSON sang YAML gọn gàng, dễ đọc.

02

2. Lưu ý khi chuyển đổi

YAML có thể biểu đạt nhiều hơn JSON: anchors (&), aliases (*), dấu phân tách nhiều tài liệu (---), và block scalars (| và >). Khi chuyển tài liệu có các phần này sang JSON, anchors/aliases sẽ được mở rộng thành giá trị nguyên văn, và nếu có nhiều tài liệu thì chỉ tài liệu đầu tiên được chuyển. JSON→YAML luôn an toàn, vì JSON gần như là tập con của YAML. Hãy chú ý các chuỗi trông giống số (ví dụ mã zip "01234") - nếu không đặt trong dấu ngoặc kép, YAML có thể hiểu chúng là số.

03

3. JSON ↔ CSV và cấu trúc lồng nhau

CSV chỉ biểu diễn được bảng (hàng và cột), nên không thể chứa trực tiếp các đối tượng/mảng lồng nhau của JSON. Công cụ này tự động làm phẳng đối tượng lồng nhau thành các cột dot-notation như "user.name", "user.age", và CSV→JSON sẽ dựng lại cấu trúc lồng nhau ban đầu từ các tiêu đề dot-notation đó. Các giá trị mảng (ví dụ danh sách tag) được lưu dưới dạng chuỗi JSON thô trong ô - an toàn hơn nhiều so với việc chỉnh tay trong bảng tính.

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

Hỗ trợ cú pháp YAML nào?
Chúng tôi dùng thư viện js-yaml, hỗ trợ cú pháp YAML 1.2 chuẩn (map, sequence, scalar, chú thích, anchors/aliases, block scalars, nhiều kiểu dữ liệu) - bao phủ hầu hết cú pháp file cấu hình thực tế.
Các đối tượng lồng nhau sẽ thế nào khi JSON→CSV?
Chúng sẽ tự động được làm phẳng thành các cột dot-notation dạng "parent.child". Ví dụ, {"user":{"name":"Kim"}} sẽ thành cột "user.name" chứa "Kim".
Tôi có thể chuyển JSON có mảng sang CSV không?
Cấp cao nhất phải là một mảng các đối tượng (vd. [{"a":1}]). Các giá trị mảng bên trong từng đối tượng (vd. danh sách tag) sẽ được lưu dưới dạng chuỗi JSON thô trong ô.
Dữ liệu của tôi có được gửi lên máy chủ không?
Không. Toàn bộ quá trình chuyển đổi diễn ra hoàn toàn trong trình duyệt của bạn (JavaScript); mọi thứ bạn nhập sẽ không được gửi lên máy chủ.