JSON 一直報錯?五個最常見的格式錯誤與快速定位方法
貼上 API 回應或設定檔卻一直跳 Unexpected token?整理最常見的 JSON 格式錯誤:多餘的逗號、單引號、註解、未跳脫的字元,並說明怎麼用格式化工具快速找出出錯的位置。
本文介紹的工具:JSON 格式化
複製了一段設定檔、或接了一個 API 回應,程式卻噴出 Unexpected token——JSON 的規則比看起來嚴格,多數錯誤都落在同樣幾個地方。
先把資料貼進 JSON 格式化工具 按「驗證」,它會直接告訴你哪裡壞掉;下面則是五個最常見的原因,看一眼多半就知道是哪個。
一、最後一個項目後面多了逗號
{
"name": "小明",
"age": 18,
}
18 後面那個逗號在 JavaScript 裡合法,在 JSON 裡不合法。這是最常見的錯誤,沒有之一。
二、用了單引號
{ 'name': '小明' }
JSON 只接受雙引號,鍵和值都是。從 Python 的字典或 JavaScript 物件直接複製過來時最常中招。
三、鍵沒有加引號
{ name: "小明" }
這是 JavaScript 物件的寫法,不是 JSON。JSON 的鍵一定要用雙引號包起來。
四、寫了註解
{
// 使用者名稱
"name": "小明"
}
JSON 標準不支援註解。有些工具(例如某些編輯器的設定檔)自行放寬了這個限制,但標準的解析器會直接報錯。要保留說明,就多開一個欄位放它。
五、字串裡有沒跳脫的字元
換行、雙引號、反斜線出現在字串裡時必須跳脫。Windows 路徑特別容易出事:
- 錯誤:
"path": "C:\Users\test"少寫一層反斜線 - 錯誤:值裡面直接按 Enter 換行
怎麼快速找到出錯的位置
錯誤訊息通常會給一個位置(position)數字,但盯著壓成一行的 JSON 找第 847 個字元是折磨。
實務上最快的做法是:
- 先按「美化」把它排開成多行(可以選 2 或 4 個空格縮排)
- 排開之後,缺括號、多逗號這類問題用眼睛就看得出來
- 再按「驗證」確認
如果資料太長,另一招是折半測試:把 JSON 切成前後兩半分別驗證,錯誤在哪半就再切一次,幾次就縮到問題那一行。
壓縮什麼時候用
「壓縮」會把所有換行與空格拿掉,變成一行。這不是為了讓人看的,而是:
- 要塞進環境變數、命令列參數
- 要放進一個只能填單行的欄位
- 想減少傳輸體積
要人看就用美化,要機器吃就用壓縮。
常見問題
資料會被上傳嗎?
不會。格式化、壓縮、驗證都在你的瀏覽器裡完成,貼上 API 金鑰或客戶資料也不會外流。這個工具連離線都能用。
驗證通過但程式還是讀不到?
那多半不是格式問題,而是結構跟程式預期的不一樣(例如程式要陣列,你給了物件)。想比對兩份 JSON 的差異,用 JSON 比對 會更快找到。
中文會變成 \u4e2d\u6587 嗎?
本工具的美化與壓縮不會把中文轉成跳脫字元,輸出仍是可讀的中文。
相關工具
- JSON 格式化:本文使用的工具
- JSON 比對:找出兩份 JSON 的差異
- Base64 編碼解碼:處理編碼過的資料
- 文字比對:一般文字的差異比對