修復 JSON 解析錯誤:Expected Property Name

這個錯誤通常代表解析器遇到了不符合 JSON 規範的物件鍵:未加引號的鍵、註解、尾隨逗號,或是嚴格 JSON 中混入了 JavaScript 語法。

這個錯誤是什麼意思

JSON 物件成員必須以一個用雙引號包起來的屬性名開頭。當解析器報 expected property name 或 expected property name or '}' 時,它通常正站在開頭的 { 或 , 之後,等著看到像 "name" 這樣的鍵。如果它看到的是 name、// 註解、/* 註解 */,或是緊接在尾隨逗號後的 },它會停下來 —— 那些是 JavaScript 的寫法,不是嚴格 JSON。

最常見的原因

排查這個錯誤最快的方法是看回報的行列位置上是什麼字元,再回頭看上一個 token。多數狀況都是以下四個小錯之一。

  • 未加引號的物件鍵,例如 { name: "Ada" }
  • 單引號的鍵或字串,例如 { 'name': 'Ada' }
  • 從 JavaScript 或 JSONC 檔案複製過來的註解
  • } 或 ] 之前的尾隨逗號

錯誤範例

{ name: 'Ada', active: true, // copied from a JS object }

修正後的 JSON

{ "name": "Ada", "active": true }

修復檢核表

把每個鍵都加上雙引號,把單引號字串換成雙引號字串,刪掉註解,去掉末尾逗號,並確認布林值與 null 是小寫。修完後,在把這個值存入設定檔、送上 API 或貼進資料庫遷移腳本之前,先做一次嚴格驗證。

自動修復什麼時候是安全的

意圖清楚時,純粹做語法清理的自動修復是安全的。不要把它當業務驗證。如果某個鍵名、數字、日期或列舉可能有歧義,先修語法,再把修好的結果跟來源系統或 API schema 做對照。