所有指南
資料

在解析器忽略重複的 JSON 鍵之前找出它們

格式化可能隱藏重複的鍵。在選擇要保留哪個值之前,先找出兩個定義。

這段 JSON 很短,看起來一眼就能檢查完:

{
  "theme": "light",
  "theme": "dark"
}

但應用到底應該使用哪個主題?有些格式化工具會先解析物件,再重新輸出。這時可能只剩下一個值,你還沒注意到衝突,它就已經被隱藏了。

語法能通過,不代表重複鍵沒問題

JSON 標準建議同一物件中的名稱保持唯一。重複名稱不一定違反 JSON 語法,但不同程式的處理方式並不一致:有的保留最後一個值,有的拒絕整個物件,也有的會保留兩個值。

JavaScript 在這個例子中會保留最後一個:

JSON.parse('{"theme":"light","theme":"dark"}').theme
// "dark"

這只是解析器的處理規則,不能證明第二個值就是對的。對於設定檔案,第一個值可能才是你想保留的。

先找到兩處定義,再修改

下載重複鍵示例,用 CozyToolkit 的 JSON 格式化器打開。

  1. 點擊 開啟 JSON,或把示例貼上到 你的 JSON。
  2. 查看高亮欄位和編輯器下方的問題列表。這個示例的第二個鍵位於第 3 行、第 3 列。
  3. 點擊問題即可跳到對應位置。顯示首次定義 會帶你回到第 2 行、第 3 列。
  4. 對照設定要求、API 資料結構或原始匯出,確認哪個值應該保留。修改前先備份;複製原始內容 可以保留原樣輸入。
  5. 刪除不需要的屬性。問題解決後,檢查輸出,再點擊 複製格式化結果 或 下載。

只要還有重複鍵,格式化器就不會生成格式化結果。排序或調整縮排無法決定哪個值是正確的。

假設這個例子中需要的是深色模式,修正後的檔案就只保留該設定。這是我們明確做出的選擇,工具不會代替你判斷。

不同物件可以使用相同的鍵名

下面兩個屬性分別屬於不同物件:

{
  "editor": { "theme": "light" },
  "preview": { "theme": "dark" }
}

每個物件內部都沒有重複鍵。搜索“theme”會找到兩處,但出現次數本身不足以說明有問題。把不同物件的示例檔案放進格式化器,不應看到重複鍵提示。

如果確實需要保存多個值,可以考慮數組,前提是接收 JSON 的程式支援這種結構。為了消除報錯而隨意改鍵名或值的類型,可能讓應用無法讀取資料。

轉義字符也可能藏著重複鍵

這個物件用了兩種寫法,解碼後卻是同一個鍵:

{"theme":"light","\u0074heme":"dark"}

其中的轉義字符代表字母 t,所以兩個名稱解碼後都是 theme。檢查器同樣會標記它。你可以下載轉義鍵示例試試。

檢查大型檔案時,需要能理解 JSON 結構的工具,不能只搜索重複詞。我們的工具支援最大 5 MB 的檔案、200,000 個值和 100 層嵌套。如果一次顯示了 100 個問題,先修復這些,再繼續檢查。超出這些限制的檔案,可以使用明確支援重複鍵檢測的本地流式校驗工具,確保它在丟棄重複值之前就能發現問題。

沒有報錯,能說明什麼

沒有重複鍵提示,說明這類衝突已經解決,並不代表檔案中的價格、權限、網址或設定值都正確。還需要核對資料結構要求,以及實際使用它的應用。

2026 年 10 月 1 日,我們用工具實際採用的檢查器測試了四個示例檔案,核對了問題的行列位置,確認重複鍵會阻止格式化,而修正版和不同物件的示例可以通過。測試結果包含這些檢查,以及 JavaScript 的解析結果。檢查在瀏覽器中完成,不會由 AI 模型決定保留哪個值。