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 個字元是折磨

實務上最快的做法是:

  1. 先按「美化」把它排開成多行(可以選 2 或 4 個空格縮排)
  2. 排開之後,缺括號、多逗號這類問題用眼睛就看得出來
  3. 再按「驗證」確認

如果資料太長,另一招是折半測試:把 JSON 切成前後兩半分別驗證,錯誤在哪半就再切一次,幾次就縮到問題那一行。

壓縮什麼時候用

「壓縮」會把所有換行與空格拿掉,變成一行。這不是為了讓人看的,而是:

  • 要塞進環境變數、命令列參數
  • 要放進一個只能填單行的欄位
  • 想減少傳輸體積

要人看就用美化,要機器吃就用壓縮。

常見問題

資料會被上傳嗎?

不會。格式化、壓縮、驗證都在你的瀏覽器裡完成,貼上 API 金鑰或客戶資料也不會外流。這個工具連離線都能用。

驗證通過但程式還是讀不到?

那多半不是格式問題,而是結構跟程式預期的不一樣(例如程式要陣列,你給了物件)。想比對兩份 JSON 的差異,用 JSON 比對 會更快找到。

中文會變成 \u4e2d\u6587 嗎?

本工具的美化與壓縮不會把中文轉成跳脫字元,輸出仍是可讀的中文。

相關工具