Tất cả bài viết

JSON Formatter: định dạng, thu gọn và xác thực

Làm việc với văn bản JSON thường quy về ba việc khác nhau: làm cho nó dễ đọc, làm cho nó gọn nhẹ, hoặc kiểm tra xem nó có đúng hay không. Đây là ba thao tác riêng biệt, dù chúng thường được gộp vào một công cụ duy nhất.

Định dạng (pretty-print)

Định dạng thêm thụt lề, xuống dòng và khoảng trắng quanh dấu câu để cấu trúc JSON dễ đọc bằng mắt thường. Đây là thay đổi thuần túy về hình thức — không ảnh hưởng đến dữ liệu, chỉ ảnh hưởng đến cách hiển thị.

Thu gọn (minify)

Thu gọn loại bỏ mọi khoảng trắng, xuống dòng và thụt lề không cần thiết, chỉ giữ lại những ký tự thực sự cần thiết. Điều này giảm kích thước tệp, quan trọng khi truyền dữ liệu qua mạng hoặc lưu trữ khối lượng lớn — bản thân cấu trúc dữ liệu không thay đổi.

Xác thực

Xác thực kiểm tra xem văn bản có phải là JSON hợp lệ về mặt cú pháp hay không. Các lỗi thường gặp mà nó bắt được: dấu phẩy thừa trước ngoặc đóng, dấu nháy đơn thay vì dấu nháy kép, khóa object không có dấu nháy, chú thích (mà chuẩn JSON hoàn toàn không cho phép), hoặc ngoặc chưa đóng. JSON hợp lệ là điều kiện tiên quyết để định dạng hoặc thu gọn có thể hoạt động.

Khi nào cần dùng cái nào

  • Định dạng — khi gỡ lỗi phản hồi API hoặc chỉnh sửa thủ công tệp cấu hình.
  • Thu gọn — trước khi gửi dữ liệu qua mạng hoặc nhúng vào mã sản phẩm.
  • Xác thực — khi chẩn đoán lý do vì sao trình phân tích cú pháp từ chối đọc một tệp JSON.

Vì sao cùng một chữ tiếng Việt lại "khác nhau" trong JSON

Một chữ như "việt" có thể được lưu theo hai cách Unicode khác nhau nhưng nhìn giống hệt nhau: dạng dựng sẵn NFC (một điểm mã duy nhất cho "ệ") hoặc dạng tổ hợp NFD (chữ "e" cộng với dấu nặng và dấu mũ là các điểm mã riêng biệt). Văn bản tiếng Việt gõ trên các hệ điều hành hoặc bộ gõ khác nhau (Unikey, Telex, macOS, Windows) có thể xuất ra JSON ở dạng chuẩn hóa khác nhau. Kết quả là hai chuỗi JSON hiển thị y hệt nhau trên màn hình nhưng khác nhau ở cấp độ byte — gây ra lỗi so sánh chuỗi âm thầm mà một trình định dạng JSON thông thường không phát hiện ra, vì cả hai đều là JSON hợp lệ.

JSON5 và JSONC không phải là JSON tiêu chuẩn

Một số môi trường (ví dụ cấu hình VS Code hay TypeScript) chấp nhận dấu phẩy thừa ở cuối, chú thích và khóa không có dấu nháy — đây là phần mở rộng JSON5 hoặc JSONC, không phải JSON tiêu chuẩn (RFC 8259). Một trình xác thực được cấu hình theo chuẩn JSON nghiêm ngặt sẽ từ chối đúng đắn tệp như vậy, dù trình soạn thảo vẫn "hiểu" được nó.

Dùng thử công cụ