工具使用常見問題:資料、檔案與匯出
結論:資料會不會上傳、能處理多大檔案、存不存本地、中文為什麼變成 \u4e2d,這十個問題把線上 JSON 工具的行為邊界講清楚。

結論:本站的解析、格式化、對比與查詢全部在瀏覽器本地執行,斷網後仍可使用;處理完敏感資料請清空 localStorage 歷史記錄;檔案超過 10 MB 改用本地命令列與流式工具,不要硬粘進瀏覽器。
把敏感報文粘進線上工具之前,先弄清它會去哪。這一篇只談工具的執行時行為,不談語法。
一、資料與隱私
JSON 線上格式化會把資料上傳到伺服器嗎?
不會。解析、格式化、壓縮、對比、查詢全部在瀏覽器裡完成,頁面不向業務伺服器傳送你貼上的任何內容。
判斷一個線上工具是否上傳資料,不用看它的隱私宣告,看瀏覽器的網路面板就夠:
- 開啟開發者工具,切到 Network 面板,勾選保留日誌;
- 貼上一段 JSON,點「格式化」;
- 觀察是否出現新的 XHR 或 fetch 請求,請求體裡是否包含你的內容。
真正本地處理的工具,這一步只會看到靜態資源請求。反過來,如果一次格式化出現了 POST /api/format
並且請求體是你的原文,那不管頁面怎麼寫,資料都已經離開瀏覽器了。
本站所有工具都是純前端實現,構建產物裡沒有服務端介面。斷網後重新整理過快取仍然可以繼續使用, 這也是判斷「是否純本地」最直接的辦法。
斷網了還能用嗎?
能用,前提是頁面已經載入過一次。
工具站的資源隨首次訪問下載到瀏覽器快取,之後即使斷網,格式化、壓縮、JSON5 轉換、 JSONPath 查詢仍然照常工作。會失效的只有依賴網路的功能,例如檢查新版本、下載桌面端安裝包。
反過來,斷網測試也是驗證「資料不外傳」的好方法:斷網後如果功能全廢,說明每次操作都在請求服務端。
資料會儲存在本地嗎?怎麼清除?
會,但只儲存在當前瀏覽器的 localStorage 裡,而且只有歷史記錄與介面設定兩類。
- 歷史記錄:最近 100 條處理記錄,按時間倒序,用於回溯上一次貼上的資料;
- 介面設定:主題、語言、縮排偏好等;
- 不會儲存的:檔案本身、上傳記錄、任何帶身份標識的內容。
清除方式有三種,效果從窄到寬:
| 方式 | 清除範圍 | 適用場景 |
|---|---|---|
| 歷史頁「清空記錄」 | 只刪歷史記錄,保留設定 | 處理完敏感資料後 |
開發者工具執行 localStorage.clear() |
本站全部本地資料 | 排查設定異常 |
| 瀏覽器「清除瀏覽資料」選本站 | Cookie、快取、儲存一起清 | 共用電腦前 |
在共用電腦上處理生產資料,處理完直接清空歷史,不要只關標籤頁——localStorage 不會隨標籤頁關閉而消失。
為什麼中文變成了 \u4e2d\u6587?
因為「轉義」功能把非 ASCII 字元轉成了 Unicode 轉義序列,這是刻意行為,不是亂碼。
\u4e2d 就是「中」字的碼位(U+4E2D)。兩種形式在 JSON 語義上完全等價,解析後都是同一個字串:
{
"escaped": "\u4e2d\u6587",
"plain": "中文"
}
什麼時候需要轉義?把 JSON 嵌進只接受 ASCII 的老系統、寫進 HTTP 頭、或者塞進另一層字串時。 什麼時候不需要?絕大多數介面傳輸、檔案儲存都不需要,UTF-8 直接存中文更省位元組——一個漢字 3 位元組, 轉義後變成 6 位元組。
看到中文變 \u4e2d,先去檢查是不是點了「轉義」按鈕,而不是懷疑編碼壞了。
二、檔案與大小
支援多大的檔案?
瀏覽器端沒有硬性上限,真正的限制來自三處:
| 環節 | 大致瓶頸 | 表現 |
|---|---|---|
| 文字框貼上 | 1–5 MB | 貼上後輸入框卡頓,游標延遲 |
JSON.parse |
50–100 MB | 主執行緒阻塞數秒,頁面無響應 |
| 樹形渲染 | 1–2 萬個節點 | 展開時掉幀、滾動卡死 |
也就是說,幾十 MB 的檔案「能解析」但「不好用」。真正需要處理這類資料時,正確做法不是換個更強的線上工具, 而是改用流式處理(見 效能與安全常見問題)。
經驗閾值:2 MB 以內線上工具很順暢;2–10 MB 要接受一兩次卡頓;超過 10 MB 建議本地指令碼處理。
貼上後瀏覽器卡住不動了,怎麼辦?
先別重新整理——重新整理會丟掉內容,還得重新貼上。按下面的順序搶救:
- 等 10–30 秒。多數情況是主執行緒在解析或渲染,會自己恢復;
- 恢復後立刻切到「壓縮」檢視或關閉樹形展開,減少 DOM 節點;
- 把內容複製到本地檔案,改用命令列處理:
# 只看前 100 行結構,避免整體載入
head -c 200000 data.json | jq . | head -n 100
# 用流式工具統計條數,不進記憶體
jq -c '.items[]' data.json | wc -l
下次遇到大檔案,先用 wc -c 看位元組數,再決定要不要往瀏覽器裡粘。
為什麼貼上進來格式沒變?
常見三種原因,按出現頻率排序:
- 輸入本身已經是壓縮格式,且沒有語法錯誤:格式化只會調整縮排,如果原文字來就兩行, 格式化後仍然兩行——因為字串裡的換行不會被展開;
- 內容不是 JSON:比如粘的是 JavaScript 物件字面量(鍵名沒引號、用了單引號), 解析器會直接報錯而不是格式化;
- 點錯了按鈕:壓縮與格式化是兩個方向,壓縮會把縮排全去掉。
判斷方法:看輸出區右上角的字元數。格式化後字元數應該增加(多了縮排與換行), 如果反而減少,說明執行的是壓縮。
三、輸入與輸出
怎麼把結果匯出成檔案?
三種方式,按可靠性排序:
| 方式 | 操作 | 適用 |
|---|---|---|
| 下載按鈕 | 點「下載」生成 .json 檔案 |
結果較大,需要留檔 |
| 複製到剪貼簿 | 點「複製」 | 結果較小,直接貼回程式碼 |
| 手動全選複製 | 選中輸出區 Ctrl/Cmd + C |
複製按鈕失效時的兜底 |
下載生成的檔案預設用 UTF-8 編碼、無 BOM。這一點很重要:帶 BOM 的 JSON 在很多解析器裡會直接報錯 (見 語法與格式常見問題 裡關於 BOM 的那一節)。
支援 JSON5 和 JSONC 嗎?
支援,但要區分「解析」與「輸出」兩件事。
- 輸入側可以貼 JSON5(單引號、無引號鍵名、註釋、尾逗號、十六進位制數字)或 JSONC(只允許註釋);
- 輸出側可以轉成標準 JSON,也可以反向把標準 JSON 轉成 JSON5 便於人工編輯。
跨系統傳輸時務必輸出標準 JSON。JSON5 是給人寫配置用的方言,Content-Type: application/json
的請求體裡出現註釋或尾逗號,服務端多半會拒絕。
四、環境與相容
手機上能用嗎?
能,介面按單列重排,格式化、壓縮、對比、JSONPath 都保留。
但手機上處理大檔案體驗很差:軟鍵盤遮擋、選中文字困難、切後臺時瀏覽器可能回收頁面導致內容丟失。 應急可以,日常建議在電腦上做。
為什麼同一個檔案在 Chrome 能開啟,在 Safari 報錯?
多數不是瀏覽器差異,而是編碼差異。按這個順序排查:
- BOM:Windows 記事本儲存的 UTF-8 帶 BOM,部分解析器不容忍;
- 換行符:CRLF 與 LF 混用本身不影響 JSON,但會讓錯誤行號錯位,看起來像「報錯位置不對」;
- 不可見字元:從網頁複製的文字可能帶零寬空格(U+200B),肉眼看不見但會讓鍵名對不上。
用一個命令就能看穿:
# 看前 16 位元組的十六進位制,EF BB BF 開頭就是帶 BOM
head -c 16 data.json | xxd
五、速查
| 問題 | 結論 |
|---|---|
| 會上傳資料嗎 | 不會,全部在瀏覽器本地處理,斷網可用 |
| 存在哪 | localStorage,僅歷史記錄與設定,不含檔案 |
| 多大檔案合適 | 2 MB 以內順暢,超過 10 MB 換命令列 |
中文變 \u |
點了轉義,等價但更佔位元組,通常無需轉義 |
| 卡住了怎麼辦 | 等恢復 → 關樹形 → 複製出來用 jq |
| 匯出帶 BOM 嗎 | 不帶,UTF-8 無 BOM |
| 支援註釋嗎 | 輸入側支援 JSON5/JSONC,輸出建議標準 JSON |