Về định dạng JSON
JSON (JavaScript Object Notation) là định dạng trao đổi dữ liệu phổ biến nhất trên web. JSON thô từ API thường được thu nhỏ — tất cả trên một dòng không có khoảng trắng — khó đọc. Làm đẹp thêm thứ tự đặt nhất quán.
Thu nhỏ xóa tất cả khoảng trắng không cần thiết, giảm kích thước tệp. Xác thực kiểm tra xem văn bản có phải là JSON đúng cú pháp không: khớp ngoặc, khóa có dấu ngoặc kép, vị trí dấu phẩy và kiểu giá trị.
Cách làm đẹp hoặc thu gọn JSON?
Để làm đẹp JSON, phân tích văn bản thành cấu trúc dữ liệu rồi chuyển lại thành chuỗi với dấu xuống dòng và thụt lề nhất quán (thường là 2 dấu cách); để thu gọn, chuyển lại cùng cấu trúc đó thành chuỗi mà không có khoảng trắng thừa. Ví dụ: {"a":1,"b":2} khi làm đẹp thành khối 4 dòng với thụt lề 2 dấu cách, và khi thu gọn trở lại {"a":1,"b":2}.
Các bước làm đẹp, thu gọn và kiểm tra hợp lệ JSON
- Dán văn bản JSON thô vào ô nhập liệu.
- Để làm đẹp, công cụ phân tích văn bản thành cấu trúc object hoặc array, rồi viết lại với thụt lề 2 dấu cách và xuống dòng cho mỗi khóa hoặc phần tử mảng.
- Để thu gọn, công cụ phân tích cùng cấu trúc đó nhưng viết lại không xuống dòng hay khoảng trắng thừa, chỉ giữ lại các ký tự cần thiết cho cú pháp hợp lệ.
- Để kiểm tra hợp lệ, công cụ thử phân tích văn bản mà không định dạng lại; phân tích thành công nghĩa là JSON hợp lệ về cú pháp.
- Nếu việc phân tích thất bại ở bất kỳ bước nào, lý do chính xác (token không mong đợi, thiếu dấu phẩy, ngoặc không khớp) sẽ được hiển thị để bạn xác định và sửa lỗi.
Làm đẹp và thu gọn
Làm đẹp: parse(văn bản) -> stringify(giá trị, thụt lề=2) | Thu gọn: parse(văn bản) -> stringify(giá trị, thụt lề=0)
- parse = chuyển văn bản JSON thành object, array, string, number, boolean hoặc null trong bộ nhớ
- stringify = chuyển cấu trúc đó ngược lại thành văn bản JSON, có hoặc không có thụt lề
Ví dụ kết quả làm đẹp và thu gọn
| Đầu vào | Đã làm đẹp (thụt lề 2 dấu cách) | Đã thu gọn |
|---|
| {"a":1,"b":2} | {⏎ "a": 1,⏎ "b": 2⏎} | {"a":1,"b":2} |
| [1,2,3] | [⏎ 1,⏎ 2,⏎ 3⏎] | [1,2,3] |
| {"x":{"y":true}} | {⏎ "x": {⏎ "y": true⏎ }⏎} | {"x":{"y":true}} |
Câu hỏi thường gặp
Vì sao công cụ báo JSON của tôi không hợp lệ dù trông có vẻ đúng?
Các lỗi khó nhận ra thường gặp gồm dấu phẩy thừa sau phần tử cuối cùng, dùng dấu nháy đơn thay vì nháy kép quanh khóa và chuỗi, hoặc khóa không có dấu nháy — tất cả đều hợp lệ trong literal object của JavaScript nhưng không hợp lệ trong JSON chuẩn. Bộ kiểm tra tuân theo ngữ pháp JSON nghiêm ngặt, nên mỗi trường hợp trên đều thất bại dù văn bản trông giống JavaScript hợp lệ.
JSON khác gì với object trong JavaScript?
JSON là định dạng dữ liệu dạng văn bản với ngữ pháp nghiêm ngặt: khóa phải là chuỗi trong dấu nháy kép, không được có dấu phẩy thừa, và chỉ cho phép một tập kiểu giá trị cố định (string, number, boolean, null, object, array). Literal object của JavaScript là cú pháp linh hoạt hơn, cho phép cả khóa không nháy, dấu phẩy thừa, hàm và chú thích, không cái nào trong số đó là JSON hợp lệ.
Thu gọn có làm thay đổi dữ liệu mà JSON biểu diễn không?
Không. Thu gọn chỉ loại bỏ khoảng trắng không thuộc về giá trị chuỗi; cấu trúc dữ liệu đã phân tích, và do đó ý nghĩa của nó, giống hệt nhau trước và sau. Chỉ có số byte cần để truyền hoặc lưu trữ văn bản là thay đổi.
Tôi có thể định dạng JSON lồng nhau sâu bằng công cụ này không?
Có. Việc làm đẹp hoạt động đệ quy trên object và array ở bất kỳ độ sâu nào, thêm 2 dấu cách thụt lề ở mỗi cấp lồng nhau để cấu trúc luôn dễ đọc bất kể lồng sâu đến đâu.
Công cụ này kiểm tra và định dạng lại JSON chuẩn theo định nghĩa của RFC 8259; không hỗ trợ JSON5, JSONC (có chú thích) hay các biến thể JSON nới lỏng khác, và dữ liệu đầu vào rất lớn (nhiều megabyte) có thể xử lý chậm trong trình duyệt.
Sources: RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format, ECMA-404 - The JSON Data Interchange Syntax