Rút gọn JSON là gì?
JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu nhẹ dựa trên văn bản, được định nghĩa bởi RFC 8259 và ECMA-404. Rút gọn loại bỏ mọi dấu cách, tab và xuống dòng nằm ngoài chuỗi văn bản — các giá trị được giữ nguyên từng byte, chỉ khoảng trắng trang trí được loại bỏ. Kết quả phân tích về đúng cùng một giá trị với đầu vào.
Rút gọn JSON hoạt động như thế nào?
Đầu vào của bạn được xử lý hoàn toàn trong trình duyệt bằng các hàm tích hợp JSON.parse và JSON.stringify. Các bước chính như sau:
- Đầu vào được đọc nguyên văn từ vùng nhập liệu — từng byte bạn dán đều được giữ trong bộ nhớ cục bộ.
- Trình duyệt phân tích nó bằng
JSON.parse. Nếu đầu vào không phải JSON hợp lệ, bộ phân tích ném raSyntaxErrorđược bắt và hiển thị nguyên văn — văn bản của bạn không bao giờ rời khỏi trang. - Khi phân tích thành công, giá trị đã phân tích được phát ra lại bằng
JSON.stringify(value)— không có đối số thụt lề — tạo ra dạng hợp lệ ngắn nhất của cùng một giá trị. - Độ dài byte của cả văn bản gốc lẫn văn bản đã rút gọn được tính bằng
new TextEncoder().encode(...).byteLength— đúng số byte UTF-8 mà một máy chủ HTTP sẽ thấy trên đường truyền. - Kết quả được ghi vào vùng văn bản chỉ đọc, dải số liệu báo cáo độ lệch byte cùng phần trăm tiết kiệm, và nút Tải về đóng gói kết quả thành tệp
.min.jsonđể bạn xuất bản.
Vì sao rút gọn JSON bằng công cụ này?
- Quyền riêng tư: mọi lượt phân tích, rút gọn và đo lường đều diễn ra trong trình duyệt của bạn. JSON không bao giờ đến máy chủ của chúng tôi — không tải lên, không telemetry, không tài khoản.
- Số byte thật: kích thước gốc, kích thước rút gọn và lượng tiết kiệm được tính bằng TextEncoder, để bạn thấy đúng độ lệch byte UTF-8 mà CDN hay API gateway sẽ tính phí.
- Không mất dữ liệu: rút gọn thuần túy là chỉnh trang — mọi giá trị phân tích về cùng cây JSON, nên an toàn cho payload sản phẩm, manifest và fixture nhúng.
- Nhanh:
JSON.parse+JSON.stringifynguyên bản xử lý ngay các payload cỡ clipboard, không cần thư viện bên ngoài.
Các ứng dụng phổ biến của rút gọn JSON là gì?
Việc loại bỏ khoảng trắng vô nghĩa khỏi JSON xuất hiện trong phát triển web, kỹ thuật dữ liệu và hệ thống nhúng:
- Giảm payload API: thu nhỏ thân request và response trước khi vượt qua một API gateway tính phí, đường ra tốn tiền hoặc liên kết vệ tinh.
- Nhúng vào HTML: đặt một khối JSON vào thuộc tính
data-*hoặc thẻ<script type="application/json">mà không để khoảng trắng pretty-print lọt vào trang đã render. - localStorage gọn hơn: giảm hạn ngạch localStorage / IndexedDB bằng cách ghi JSON đã rút gọn thay vì JSON in đẹp, đặc biệt giá trị trên trình duyệt di động có giới hạn lưu trữ chặt cho mỗi origin.
Ví dụ về rút gọn JSON trông như thế nào?
Dán một tệp cấu hình in đẹp 1.2 KB (khoảng 1,225 byte với thụt lề 2 dấu cách) và nhấn Rút gọn thường thu nó xuống dưới 0.4 KB — tiết kiệm 66% — với mọi khóa và giá trị được giữ nguyên chính xác. Tệp output.min.json tải về giống y từng byte với điều mà một máy chủ HTTP phát ra với Content-Type: application/json và không có lớp formatter nào.
Công cụ này có chạy trong trình duyệt không?
Có. Quy trình rút gọn là JSON.parse + JSON.stringify thuần túy chạy trong tab trình duyệt. Không gì được tải lên, không service worker nào ủy quyền đầu vào của bạn, và trang không gửi yêu cầu mạng nào cho bước rút gọn. Lưu lượng ra duy nhất là các tài nguyên tải trang chuẩn (CSS, font, analytics) — JSON của bạn không bao giờ đến Ultim8Soft.
Vì sao phải rút gọn JSON?
JSON đã rút gọn phân tích về cùng giá trị với nguồn in đẹp nhưng nhỏ hơn trên đường truyền và trong lưu trữ. Payload nhỏ hơn đồng nghĩa với hóa đơn CDN egress thấp hơn, tải xuống trên di động nhanh hơn, ít áp lực bộ nhớ bên trong service worker, và khớp tốt hơn vào các phong bì kích thước cố định như payload JWT, thuộc tính HTML data-* và hạn ngạch localStorage. Với các API lưu lượng cao, lượng byte tiết kiệm cộng dồn — giảm 30% trên endpoint 1 GB/ngày tiết kiệm khoảng 9 GB mỗi tháng.
Rút gọn có mất dữ liệu không?
Không. Rút gọn JSON chỉ loại bỏ khoảng trắng nằm ngoài chuỗi văn bản — dấu cách, tab và xuống dòng mà bản đặc tả đã xếp là không quan trọng. Mọi khóa, giá trị, số, chuỗi escape và ký tự chuỗi đều được giữ nguyên từng byte. Kết quả phân tích thành một giá trị deepEqual với đầu vào. Chỉ thụt lề trang trí biến mất.
Khác biệt giữa bộ định dạng và bộ rút gọn là gì?
Công cụ đi kèm Trình định dạng JSON đi theo hướng ngược lại: nó mở rộng khoảng trắng để con người đọc cấu trúc lồng nhau. Còn Trình rút gọn loại bỏ khoảng trắng đó để vận chuyển và lưu trữ. Hai công cụ là nghịch đảo — chuyển một tài liệu JSON qua Trình định dạng → Trình rút gọn cho ra cùng chuỗi byte bạn đã đưa vào trình rút gọn, vì cả hai đều thao tác trên giá trị đã phân tích chứ không phải dấu trang trí.
Trình rút gọn JSON này dùng cùng bộ phân tích mà runtime Node.js, Deno hay trình duyệt của bạn dùng, và cho ra kết quả giống từng byte với điều một máy chủ HTTP tối giản sẽ phát ra. Dán bất kỳ JSON nào ở trên, sao chép kết quả, hoặc tải về dưới dạng .min.json.