JSON 檔案是什麼、用什麼開啟、怎麼改
結論:從「雙擊變成記事本亂碼」講到編輯器、瀏覽器、線上工具三條開啟路徑,再說明改完之後怎麼確認沒改壞,以及大檔案打不開時的替代方案。

結論:開啟 JSON 檔案前先確認編碼與 BOM,再檢查結構是否只有物件或陣列;改完之後一定用解析器校驗一次,不要靠肉眼確認括號和逗號。
它就是一個字尾為
.json的純文字檔案,用記事本也能開啟。真正讓人頭疼的不是「打不開」,而是開啟之後看不出來哪裡改壞了。
一、JSON 檔案裡到底裝了什麼
一個合法的 JSON 檔案,內容只有兩種可能:一個物件 {...},或者一個陣列 [...]。除此之外什麼都不允許——不能有變數宣告、不能有註釋、不能有函式。
{
"name": "訂單服務",
"port": 8080,
"debug": false,
"upstream": ["10.0.0.11", "10.0.0.12"],
"timeout": null
}
從結構上認三件事就夠了:
| 你看到的 | 含義 | 對應程式設計概念 |
|---|---|---|
{ } 包起來的鍵值對 |
物件,鍵必須是雙引號字串 | Map / 結構體 |
[ ] 包起來的一串值 |
陣列,元素型別可以不同 | 列表 |
| 六個值型別 | 字串、數字、布林、null、物件、陣列 | 就這六種,沒有日期和整數 |
副檔名不決定內容,package.json、tsconfig.json、composer.json 都是同一種東西,只是被不同工具約定讀不同的鍵。
二、三條開啟路徑,按場景選
看一眼就走:用瀏覽器開啟。把檔案拖進 Chrome 或 Edge 視窗即可,瀏覽器會原樣顯示;裝了 JSON Viewer 類外掛的話會自動排版加摺疊。
要改內容:用編輯器。VS Code、Sublime、Notepad++ 都自帶 JSON 語法高亮和括號匹配,VS Code 裡 Shift + Alt + F 就是格式化。注意 Windows 記事本儲存時可能加 BOM 頭,改了配置反而不生效,建議避開。
不想裝東西、只想驗證:用 線上 JSON 格式化。貼上進去立刻能看到行列號、錯誤位置、摺疊樹,改完直接複製走。資料在瀏覽器本地處理,不上傳伺服器。
大檔案(幾十 MB 以上):不要用編輯器硬開。VS Code 開啟 100 MB 的 JSON 會卡到懷疑人生,改用命令列先看結構:
# 看前 20 行,確認是不是陣列
head -n 20 data.json
# 用 jq 看頂層鍵名,不載入全文
jq -r 'keys[]' data.json | head
# 統計陣列長度
jq 'length' data.json
三、雙擊開啟是亂碼怎麼辦
三種原因,處理方式不同:
- 其實是二進位制檔案(比如
.json字尾的壓縮包、匯出的資料庫檔案)。用file data.json看真實型別,別硬當文字處理。 - 編碼不是 UTF-8。GBK 編碼的中文在 UTF-8 環境裡就是亂碼。用編輯器的「透過編碼重新開啟」選 GBK 試一次,能正常顯示就另存為 UTF-8。
- 檔案被加密或壓縮過。現象是開頭出現
PK(zip)或一堆問號,這種要先解壓/解密。
四、改完之後怎麼確認沒改壞
JSON 的容錯是零:少一個逗號、多一個逗號、少一個引號,整份檔案就廢了,而且報錯位置經常指向下一行。所以改完必須校驗,別靠肉眼。
改動的三個高危動作,按踩坑頻率排序:
| 動作 | 常見後果 | 規避方式 |
|---|---|---|
| 複製貼上一段配置進來 | 帶進尾逗號或全形標點 | 貼上後立即格式化一次 |
| 手動調換鍵的順序 | 多出或少掉逗號 | 用編輯器的行移動,別手打 |
| 刪除陣列最後一個元素 | 留下 ,] |
刪完看括號是否成對 |
校驗方式很簡單:粘進 線上校驗 看是否有紅字,或者命令列跑一句:
python3 -m json.tool config.json > /dev/null && echo OK
有輸出 OK 就是合法。想連欄位型別一起校驗(比如 port 必須是數字、name 不能為空),寫一份 JSON Schema 比人眼可靠得多。
五、.json 與幾個近親的區別
| 字尾 | 差別 | 能不能被標準解析器讀 |
|---|---|---|
.json |
標準 JSON | 能 |
.jsonc |
允許 // 與 /* */ 註釋 |
不能,要先去掉註釋 |
.json5 |
允許註釋、單引號、不加引號的鍵、尾逗號 | 不能,需要 JSON5 解析器 |
.jsonl / .ndjson |
每行一個獨立 JSON,整體不是合法 JSON | 不能整體解析,要按行讀 |
看到 tsconfig.json 裡帶註釋不要奇怪,它實際按 .jsonc 處理;把同樣內容丟進 JSON.parse 就會報錯。需要互轉時用 JSON5 轉 JSON 一鍵清掉註釋和尾逗號。
六、什麼時候該換儲存格式
JSON 適合「結構不固定、人要看、跨語言傳」的場景。如果檔案超過幾十 MB、欄位結構穩定、需要按條件查詢,繼續用 JSON 就是在給自己找麻煩——換成 SQLite、Parquet 或直接入庫,讀寫效能差著數量級,具體取捨見 大 JSON 的解析與流式處理。
常見問題
大 JSON 檔案打不開時應該怎麼查看?
不要在編輯器裡硬開,VS Code 開啟 100 MB 的 JSON 會卡到不可用。改用命令列先看結構:head -n 20 確認是不是陣列,jq -r 'keys[]' 只看頂層鍵名,jq 'length' 統計陣列長度。這些命令都不需要載入全文。
為什麼記事本改完 JSON 後配置不生效?
Windows 記事本儲存時可能加 BOM 頭,帶 BOM 的檔案會讓配置解析失敗,所以改了內容也不生效。原文的建議是改用 VS Code、Sublime、Notepad++ 這類編輯器,它們自帶語法高亮和括號匹配。若已經用了記事本,另存為「UTF-8 無 BOM」再試。
是否可以把 JSON 檔案當成 JSON5 直接加註解?
不可以,標準解析器讀 .json 時不允許註解,JSON.parse 會直接報錯。註解要寫在 .jsonc 或 .json5 檔案裡,並用對應的解析器讀取。tsconfig.json 這類檔案實際按 .jsonc 處理,把同樣內容丟進 JSON.parse 就會失敗。