JSON Diff 差異比對
貼上兩份 JSON 文件,逐行查看新增或移除的內容。系統會先排序物件鍵值,因此重新排列順序的物件不會被計為變動。所有處理都在您的瀏覽器中執行,您的資料絕不會上傳。
如何比對 JSON
- 將原始 JSON 貼到左側方塊。
- 將變更後的 JSON 貼到右側方塊。
- 查看下方標示出的新增與移除內容。
關於 JSON 比對
用肉眼比對 JSON 容易出錯,尤其是當鍵值順序被打亂或文件龐大時。語意比對會先將兩側正規化 — 排序物件鍵值,同時保留陣列順序 — 接著只標示真正有差異的行,讓您看到的是實質變更,而非格式雜訊。
這對於檢視 API 回應、設定變更與快照測試輸出非常實用。所有運算都在您的瀏覽器中完成,因此您比對的資料 — 往往含有真實記錄 — 絕不會離開您的裝置。
當兩個環境設定不一致,且設定檔本應完全相同時,就應該使用「diff」工具來比較差異——例如,測試環境與正式環境的設定檔就是一個經典的例子。它同樣有助於驗證您所做的修改:在手動調整大型文件後,使用「diff」工具可以確認您是否只修改了您想要修改的欄位,而沒有修改其他任何欄位。此外,當 API 升級導致客戶端出現問題時,比較來自不同版本的 API 回應,就能在幾秒鐘內找出已重新命名的或遺失的欄位。
這種「排序鍵,但不排序陣列」的行為,與 JSON 規格本身相符。一個物件被定義為一個無序的集合——兩個具有相同成員的物件,無論序列化器以何種順序寫入它們,其值都是相同的。與此相反,陣列在定義上是有序的:交換兩個元素會產生一個截然不同的文件。僅對其中一個進行標準化,而不對另一個進行標準化,這就是區分語義比較和簡單文字差異化的關鍵。
常見問題
如何比對兩份 JSON 檔案?
將原始版本貼在左側,變更後的版本貼在右側。新增的行會以綠色標示,移除的行以紅色標示,並各自附上數量統計。
鍵值順序會影響結果嗎?
不會。比對前會將兩側依排序後的鍵值重新序列化,因此重新排列相同的鍵值不會顯示差異 — 只有真正的值或結構變更才會出現。
如果我的 JSON 無效怎麼辦?
工具會告訴您哪一側解析失敗以及原因,讓您在比對前先修正。
我的資料會被上傳嗎?
不會。比對完全在您的瀏覽器中執行;不會傳送任何內容到伺服器。
為什麼看似相同的數值,在顯示時卻會呈現出已變更的狀態?
通常是資料類型上的差異。字串「1」和數字 1 顯示時幾乎相同,但它們是不同的 JSON 值,同樣地,「true」和布林值 true,以及「null」和空值 null 也是如此。這通常會在從試算表或表單輸入匯出的資料中出現問題,因為所有資料都會以字串的形式呈現。差異比較會告訴你真相——檢查已變更值周圍的引號。