幾乎每個「Unexpected token in JSON」錯誤,都來自同一份很短的失誤清單。以下逐一列出與修法。(不熟這格式?先看 JSON 是什麼。)
1. 多餘的逗號
JSON 不允許最後一項後面還有逗號:
{ "a": 1, "b": 2, } ← 無效
{ "a": 1, "b": 2 } ← 有效
2. 單引號
字串與屬性名必須用雙引號:
{ 'name': 'Ann' } ← 無效
{ "name": "Ann" } ← 有效
3. 屬性名沒加引號
不像 JavaScript 物件,JSON 的鍵一定要加引號:
{ name: "Ann" } ← 無效
{ "name": "Ann" } ← 有效
4. 註解
JSON 不能有註解。解析前把 // 與 /* */ 移除。
5. 括號錯誤或缺漏
每個 { 都要有 }、每個 [ 都要有 ]。常見的是括號混用,或忘了把多筆資料用陣列 [ … ] 包起來。
6. 非數值的值
NaN、Infinity、undefined 都不是合法 JSON。請改用數字、字串或 null。
最快的修法:驗證
與其用肉眼找,不如把 JSON 貼進會指出錯誤位置的驗證工具:
- JSON 格式化與驗證——美化、壓縮、驗證,並標出語法錯誤的位置。
- 之後要放進試算表?把 JSON 轉成 CSV 或 Excel。
修好上面六個失誤,絕大多數「JSON 無效」的問題就會消失——全程在你的瀏覽器本機執行,連機敏資料也不外流。