JSON không phải định dạng duy nhất cho dữ liệu có cấu trúc — YAML, CSV, XML và TOML mỗi định dạng ra đời từ một nhu cầu khác nhau, và việc chuyển đổi qua lại là công việc thực tế thường gặp, nhất là khi kết nối hệ thống XML cũ với API JSON hiện đại.
Từng định dạng dùng để làm gì
- YAML — dùng thụt lề thay vì dấu ngoặc nhọn, là chuẩn cho pipeline CI/CD, Kubernetes và Docker Compose.
- CSV — phẳng và dạng bảng, mẫu số chung cho bảng tính và công cụ phân tích dữ liệu.
- XML — cũ hơn, có thuộc tính và namespace, vẫn là nền tảng của dịch vụ SOAP và nhiều hệ thống doanh nghiệp/nhà nước cũ.
- TOML — thiết kế để rõ ràng và dễ chỉnh sửa thủ công, nổi tiếng qua
Cargo.tomltrong Rust.
Vấn đề bảng mã khi CSV chứa tiếng Việt có dấu
Nhiều hệ thống Việt Nam cũ từng lưu văn bản bằng bảng mã TCVN3 hoặc VNI thay vì Unicode, nên khi mở một file CSV chứa tiếng Việt có dấu trong Excel mà không đúng bảng mã, các ký tự như "ư", "ơ", "đ" dễ biến thành ký tự lạ. Vì công cụ này xuất CSV bằng UTF-8, nên khi mở trong Excel cần đảm bảo import đúng encoding UTF-8 (thường qua tính năng "Get Data from Text/CSV" thay vì mở file trực tiếp) để dấu tiếng Việt hiển thị đúng.
Điều gì có thể mất khi chuyển đổi
Không phải phép chuyển đổi nào cũng an toàn như nhau. JSON → CSV làm mất cấu trúc lồng nhau: đối tượng sâu và mảng có độ dài khác nhau không vừa với một bảng hình chữ nhật, nên phải làm phẳng (flatten) hoặc đơn giản hóa trước. Ngược lại, JSON ↔ YAML và JSON ↔ TOML gần như luôn không mất dữ liệu, vì cả hai đều hỗ trợ cấu trúc lồng nhau giống JSON.
Cái bẫy tự đoán kiểu dữ liệu trong YAML
Bộ phân tích YAML cố đoán kiểu của một giá trị không có dấu ngoặc kép: version: 1.20 có thể biến thành số 1.2, mất số 0 ở cuối, và chuỗi NO có thể biến thành boolean false theo quy tắc của YAML 1.1. Giá trị nào cần giữ nguyên dạng chuỗi thì nên đặt trong dấu ngoặc kép trước khi chuyển sang JSON.
Dùng để làm gì trong thực tế
- Chuyển cấu hình từ công cụ yêu cầu YAML sang công cụ yêu cầu JSON, hoặc ngược lại.
- Xuất dữ liệu từ API sang CSV để xem nhanh trong bảng tính.
- Kết nối một hệ thống cũ dùng XML/SOAP với một API JSON hiện đại.