JSON Toolkit

Câu hỏi thường gặp về cách dùng công cụ: dữ liệu, tệp và xuất

Kết luận: Dữ liệu có bị tải lên không, tệp lớn đến mức nào thì dùng được, có gì được lưu cục bộ, tại sao tiếng Trung biến thành escape: mười câu hỏi nói rõ ranh giới thực sự của một công cụ JSON trực tuyến.

Người mớiĐọc khoảng 10 phútXuất bản 2026-10-30Cập nhật 2026-10-30
Ảnh bìa câu hỏi thường gặp về cách dùng công cụ

Tóm lại: phân tích, định dạng, so sánh và truy vấn chạy hoàn toàn trong trình duyệt của bạn và vẫn hoạt động khi ngoại tuyến; hãy xóa lịch sử localStorage sau khi xử lý dữ liệu nhạy cảm; và với tệp trên 10 MB, hãy chuyển sang công cụ dạng luồng trên dòng lệnh thay vì dán tệp vào trình duyệt.

Trước khi dán một payload nhạy cảm vào công cụ trực tuyến, hãy biết nó đi đâu. Bài này chỉ nói về hành vi lúc chạy của công cụ, không bàn về cú pháp.

1. Dữ liệu và quyền riêng tư

Công cụ định dạng JSON trực tuyến có tải dữ liệu của tôi lên máy chủ không?

Không. Phân tích, định dạng, nén, so sánh và truy vấn đều diễn ra trong trình duyệt, và trang không bao giờ gửi bất cứ thứ gì bạn dán lên máy chủ ứng dụng.

Bạn không cần đọc tuyên bố quyền riêng tư để biết một công cụ trực tuyến có tải dữ liệu lên hay không; bảng network của trình duyệt là đủ:

  1. Mở công cụ cho nhà phát triển, chuyển sang bảng Network và bật lưu giữ log;
  2. Dán một đoạn JSON và bấm "Định dạng";
  3. Xem có yêu cầu XHR hoặc fetch mới xuất hiện không, và phần thân của nó có chứa nội dung của bạn không.

Với một công cụ thực sự cục bộ, bước này chỉ hiện các yêu cầu tải tài nguyên tĩnh. Ngược lại, nếu chỉ một thao tác định dạng mà sinh ra POST /api/format với phần thân là văn bản gốc của bạn, thì dữ liệu đã rời khỏi trình duyệt bất kể trang nói gì.

Mọi công cụ trên trang này đều là triển khai thuần front-end, và bản dựng không chứa API máy chủ. Sau khi ngắt mạng, việc tải lại trang từ bộ nhớ đệm vẫn hoạt động, và đó cũng là cách trực tiếp nhất để biết một thứ có "hoàn toàn cục bộ" hay không.

Tôi có thể dùng khi ngoại tuyến không?

Có, miễn là trang đã được tải một lần.

Tài nguyên của trang được tải vào bộ nhớ đệm trình duyệt trong lần truy cập đầu tiên, nên ngay cả khi sau đó không có mạng, việc định dạng, nén, chuyển đổi JSON5 và truy vấn JSONPath vẫn hoạt động. Chỉ những tính năng phụ thuộc mạng mới thất bại, như kiểm tra phiên bản mới hoặc tải bộ cài desktop.

Phép thử ngoại tuyến cũng là cách tốt để xác nhận "dữ liệu không bao giờ rời đi": nếu mọi thứ hỏng ngay khi bạn ngắt kết nối, thì mọi thao tác đều đang nói chuyện với máy chủ.

Có dữ liệu nào được lưu cục bộ không? Xóa bằng cách nào?

Có, nhưng chỉ trong localStorage của trình duyệt hiện tại, và chỉ lịch sử cùng cài đặt giao diện.

  • Lịch sử: 100 mục đã xử lý gần nhất theo thứ tự thời gian ngược, dùng để gợi lại dữ liệu đã dán trước đó;
  • Cài đặt giao diện: giao diện, ngôn ngữ, tùy chọn thụt lề, v.v.;
  • Không lưu: bản thân tệp, bản ghi tải lên, hay bất cứ thứ gì mang danh tính.

Có ba cách xóa, từ hẹp nhất đến rộng nhất:

Cách Phạm vi Khi nào dùng
"Xóa lịch sử" trên trang lịch sử Chỉ xóa lịch sử, giữ cài đặt Sau khi xử lý dữ liệu nhạy cảm
Chạy localStorage.clear() trong công cụ cho nhà phát triển Toàn bộ dữ liệu cục bộ của trang này Khi chẩn đoán cài đặt bất thường
"Xóa dữ liệu duyệt web" của trình duyệt cho trang này Cookie, bộ nhớ đệm và lưu trữ cùng lúc Trước khi dùng máy tính dùng chung

Khi xử lý dữ liệu production trên một máy tính dùng chung, hãy xóa lịch sử sau khi xong thay vì chỉ đóng tab — localStorage không biến mất khi tab đóng lại.

Tại sao ký tự tiếng Trung biến thành \u4e2d\u6587?

Vì tính năng "escape" chuyển các ký tự không thuộc ASCII thành chuỗi escape Unicode. Đây là hành vi có chủ đích, không phải mojibake.

\u4e2d là mã điểm của ký tự 中 (U+4E2D). Hai dạng này tương đương về ngữ nghĩa trong JSON và phân tích thành cùng một chuỗi:

{
  "escaped": "\u4e2d\u6587",
  "plain": "中文"
}

Khi nào cần escape? Khi nhúng JSON vào một hệ thống cũ chỉ chấp nhận ASCII, khi ghi nó vào HTTP header, hoặc khi lồng nó trong một chuỗi khác. Khi nào không cần? Phần lớn việc truyền tải API và lưu trữ tệp không cần; lưu tiếng Trung trực tiếp dưới dạng UTF-8 tiết kiệm byte — một ký tự tiếng Trung là 3 byte, và 6 byte khi đã escape.

Nếu bạn thấy tiếng Trung biến thành \u4e2d, trước hết hãy kiểm tra xem bạn có bấm nút "Escape" không, thay vì nghi ngờ rằng encoding bị hỏng.

2. Tệp và kích thước

Kích thước tệp được hỗ trợ là bao nhiêu?

Không có giới hạn cứng ở phía trình duyệt; giới hạn thực đến từ ba nơi:

Giai đoạn Nút cổ chai ước lượng Triệu chứng
Dán vào ô văn bản 1–5 MB Ô nhập bị trễ sau khi dán, con trỏ phản hồi chậm
JSON.parse 50–100 MB Luồng chính chặn vài giây, trang không phản hồi
Kết xuất cây 10k–20k nút Rớt khung hình khi mở rộng, cuộn bị đóng băng

Nói cách khác, một tệp vài chục MB "có thể phân tích" nhưng "không dùng được". Khi bạn thực sự cần xử lý dữ liệu như vậy, cách đúng không phải là tìm một công cụ trực tuyến mạnh hơn, mà là chuyển sang dạng luồng (xem Câu hỏi thường gặp về hiệu năng và bảo mật).

Quy tắc kinh nghiệm: dưới 2 MB thì công cụ trực tuyến vẫn mượt; 2–10 MB là chấp nhận một hai lần trễ; trên 10 MB thì nên dùng script cục bộ.

Trình duyệt bị đóng băng sau khi tôi dán. Giờ phải làm sao?

Đừng tải lại trước — tải lại sẽ mất nội dung và bạn phải dán lại. Hãy cứu theo thứ tự này:

  1. Đợi 10–30 giây. Trong hầu hết trường hợp, luồng chính đang phân tích hoặc kết xuất và sẽ tự phục hồi;
  2. Khi nó phục hồi, ngay lập tức chuyển sang chế độ xem "Nén" hoặc thu gọn cây để giảm số nút DOM;
  3. Sao chép nội dung vào một tệp cục bộ và chuyển sang dòng lệnh:
# Look at the structure of the first 100 lines only, to avoid loading everything
head -c 200000 data.json | jq . | head -n 100

# Count entries with a streaming tool, without loading them into memory
jq -c '.items[]' data.json | wc -l

Lần sau khi gặp tệp lớn, hãy chạy wc -c trước để xem số byte, rồi mới quyết định có dán vào trình duyệt không.

Tại sao sau khi dán, định dạng không thay đổi?

Ba nguyên nhân phổ biến, xếp theo tần suất:

  1. Đầu vào vốn đã được nén và không có lỗi cú pháp: định dạng chỉ điều chỉnh thụt lề, nên nếu bản gốc thực sự chỉ có hai dòng, thì sau đó vẫn là hai dòng — xuống dòng bên trong chuỗi không được mở rộng;
  2. Nội dung không phải JSON: ví dụ bạn dán một object literal của JavaScript (khóa không có nháy, nháy đơn), và trình phân tích báo lỗi thay vì định dạng;
  3. Bạn bấm nhầm nút: nén và định dạng đi theo hai hướng ngược nhau, và nén sẽ bỏ toàn bộ thụt lề.

Cách phân biệt: xem số ký tự ở góc trên bên phải vùng kết quả. Sau khi định dạng, số ký tự phải tăng (thêm thụt lề và xuống dòng); nếu nó giảm đi thì bạn đã chạy nén.

3. Đầu vào và đầu ra

Làm sao xuất kết quả ra tệp?

Ba cách, xếp theo độ tin cậy:

Cách Thao tác Khi nào dùng
Nút tải xuống Bấm "Tải xuống" để tạo tệp .json Kết quả lớn cần lưu trữ
Sao chép vào clipboard Bấm "Sao chép" Kết quả nhỏ để dán thẳng lại vào mã
Chọn tất cả và sao chép thủ công Chọn vùng kết quả và nhấn Ctrl/Cmd + C Phương án dự phòng khi nút sao chép lỗi

Tệp tải xuống được mã hóa UTF-8 không có BOM theo mặc định. Điều này quan trọng: JSON có BOM hỏng ngay trong nhiều trình phân tích (xem phần về BOM trong Câu hỏi thường gặp về cú pháp và định dạng).

Có hỗ trợ JSON5 và JSONC không?

Có, nhưng hãy phân biệt "phân tích" với "kết xuất".

  • Ở phía đầu vào, bạn có thể dán JSON5 (nháy đơn, khóa không có nháy, chú thích, dấu phẩy cuối, số thập lục phân) hoặc JSONC (chỉ chú thích);
  • Ở phía đầu ra, bạn có thể chuyển sang JSON chuẩn, hoặc chuyển JSON chuẩn ngược lại thành JSON5 để chỉnh tay dễ hơn.

Luôn xuất JSON chuẩn khi đi qua ranh giới hệ thống. JSON5 là dialect cho người viết cấu hình; một phần thân yêu cầu với Content-Type: application/json mà chứa chú thích hoặc dấu phẩy cuối thường sẽ bị máy chủ từ chối.

4. Môi trường và khả năng tương thích

Có dùng được trên điện thoại không?

Có. Giao diện tự động chuyển thành một cột, và định dạng, nén, so sánh và JSONPath đều được giữ lại.

Nhưng xử lý tệp lớn trên điện thoại là trải nghiệm kém: bàn phím ảo che nội dung, chọn văn bản khó, và trình duyệt có thể loại bỏ trang khi bạn chuyển ứng dụng, làm mất nội dung. Chấp nhận được khi khẩn cấp, nhưng hằng ngày nên làm trên máy tính để bàn.

Tại sao cùng một tệp mở được trong Chrome nhưng lại lỗi trong Safari?

Thường đó không phải là khác biệt trình duyệt mà là khác biệt encoding. Hãy gỡ theo thứ tự này:

  1. BOM: UTF-8 do Notepad trên Windows lưu có kèm BOM, và một số trình phân tích không chấp nhận điều đó;
  2. Ký tự xuống dòng: trộn CRLF và LF không ảnh hưởng đến bản thân JSON, nhưng nó làm lệch số dòng báo lỗi, nên trông như "vị trí lỗi bị sai";
  3. Ký tự vô hình: văn bản sao chép từ trang web có thể chứa dấu cách độ rộng bằng không (U+200B), mắt không thấy nhưng đủ để làm hỏng việc khớp khóa.

Một lệnh là đủ để nhìn ra:

# Look at the hex of the first 16 bytes; a leading EF BB BF means a BOM is present
head -c 16 data.json | xxd

5. Bảng tra nhanh

Câu hỏi Kết luận
Có tải dữ liệu lên không Không, mọi thứ được xử lý cục bộ trong trình duyệt, và hoạt động cả khi ngoại tuyến
Dữ liệu lưu ở đâu localStorage, chỉ lịch sử và cài đặt, không bao giờ lưu tệp
Kích thước tệp hợp lý Mượt dưới 2 MB; trên 10 MB hãy chuyển sang dòng lệnh
Tiếng Trung biến thành \u Bạn đã bấm escape; tương đương nhưng cồng kềnh hơn, thường không cần thiết
Nó bị đóng băng, giờ sao Đợi phục hồi → thu gọn cây → sao chép ra và dùng jq
Tệp xuất có BOM không Không, UTF-8 không có BOM
Có hỗ trợ chú thích không JSON5/JSONC ở phía đầu vào; hãy xuất JSON chuẩn