JSON Diff
免費線上 JSON Diff 工具,左右對比兩個 JSON 物件,高亮顯示新增、刪除和修改的欄位。對比前自動格式化並做逐行、逐字元比對,即時統計增刪改數量,提供文字與語意兩種檢視,適合 API 介面接軌、設定檔版本比對和自動化測試資料排查。
免費線上 JSON Diff 工具,左右對比兩個 JSON 物件,高亮顯示新增、刪除和修改的欄位。對比前自動格式化並做逐行、逐字元比對,即時統計增刪改數量,提供文字與語意兩種檢視,適合 API 介面接軌、設定檔版本比對和自動化測試資料排查。
將兩個 JSON 文字分別貼到左右輸入欄中,工具會先自動格式化,再進行逐行、逐字元的深度比對。新增的內容以綠色高亮,刪除的以紅色高亮,修改的行同時顯示新舊值並高亮變化的字元,幫助你瞬間定位資料差異。
不需要。工具在對比前會自動把左右兩側的 JSON 解析並統一格式化(2 空白縮排),因此即使兩份 JSON 的縮排、空白、換行完全不同,只要資料內容一致就不會產生無意義的差異。這相當於自動忽略了空白字元的干擾。
文字檢視按格式化後的行逐行對比,直觀展示每一行的增刪改,適合快速瀏覽整體變化;語意檢視更側重按 JSON 的結構和欄位進行對比,幫助你從資料含義層面理解哪些欄位發生了變化。兩種檢視可隨時一鍵切換。
會。工具按格式化後的內容順序比對,陣列元素順序不同會顯示為差異。如果你只關心內容是否一致而不在意順序,建議先用 JSON 格式化工具的「鍵名排序」或對陣列排序後再來對比,即可避免順序造成的干擾。
非常適合以下場景:1) API 接軌:對比實際介面回傳與預期 Mock 資料的差異;2) 設定管理:比對不同環境(開發/正式)的設定檔差異;3) 自動化測試:作為測試斷言的輔助工具,快速排查資料不一致問題;4) 版本升級:對比第三方 API 升級前後回傳結構的變更。
JSON 格式化是將難讀的 JSON 整理成易讀的層級結構,而 JSON Diff 是對比兩個 JSON 之間的差異。兩者經常配合使用:本工具其實已經內建了格式化步驟,會在對比前自動美化兩側內容,讓你專注於差異本身。
可以。工具支援將目前左右兩側的內容壓縮編碼進 URL,生成可分享連結,對方打開即可看到相同的對比場景,無需上傳伺服器。你也可以一鍵複製任意一側的內容用於程式碼審查或問題追蹤。
可以。工具支援多分頁對比,你可以在不同分頁中分別貼上不同的 JSON 對進行比較,分頁之間互不干擾,方便同時排查多個介面或多份設定的差異。
會。底部狀態列會即時統計新增、刪除、修改三類差異的數量,一眼就能看出改動規模。如果兩份 JSON 完全一致,會顯示「完全相同」的提示。
不會。所有格式化和差異比對都完全在瀏覽器本機執行,資料不會上傳到任何伺服器。即使對比包含金鑰、Token 或使用者隱私的介面回傳值也很安全,關閉頁面後資料即被清除。
JSON Diff 是指對兩份 JSON 資料進行差異比對,找出它們之間新增、刪除和被修改的欄位。在日常開發中,我們經常需要知道兩個 JSON「到底哪裡不一樣」:介面升級前後回傳結構變了什麼、兩個環境的設定差在哪、自動化測試的實際結果和預期基準偏差在哪個欄位。人工逐行核對既慢又容易漏,JSON Diff 工具能把差異自動高亮出來。
JSON 差異比對通常有兩種思路。一種是「文字差異」(textual diff):把 JSON 格式化成規範的多行文字後,按行做類似 Git diff 的比較,直觀展示每一行的增刪改。另一種是「語意/結構差異」(structural diff):把 JSON 解析成樹狀結構,按欄位路徑(如 user.address.city)逐一比對值和類型,不受欄位書寫順序、縮排等排版因素影響。本工具同時提供文字檢視和語意檢視,可按需切換。
為什麼要先格式化再對比?因為同一份資料可能有完全不同的排版(一行 vs 多行、2 空白 vs 4 空白),如果直接按原文比對,會產生大量由排版差異造成的「假差異」。本工具在對比前會自動把兩側 JSON 解析並統一格式化,從而消除空白字元的干擾,讓你只看到真正有意義的資料變化。
需要注意的是,JSON 中物件的鍵順序在語意上不重要({"a":1,"b":2} 與 {"b":2,"a":1} 等價),但陣列的元素順序是有意義的([1,2] 與 [2,1] 不同)。因此當你只關心陣列內容是否一致、不在意順序時,建議先對陣列排序或對鍵名排序後再對比,避免順序變化被誤判為差異。
本工具的所有格式化與比對都在瀏覽器本機完成,資料不會上傳伺服器;同時支援字元級高亮、增刪改數量統計、多分頁同時對比以及透過 URL 分享對比場景,適合介面接軌、設定比對、測試斷言和 Code Review 等場景。
對比兩份 JSON 時,差異通常可歸為以下幾類,理解它們有助於快速判斷改動性質。
| 差異類型 | 標記 | 說明 |
|---|---|---|
| 新增 (Added) | + 綠色 | 新版本中出現、舊版本中沒有的欄位或陣列元素。 |
| 刪除 (Removed) | − 紅色 | 舊版本中存在、新版本中被移除的欄位或陣列元素。 |
| 修改 (Modified) | ~ 黃色 | 欄位仍在,但值發生了變化,會同時顯示新舊值並高亮變化字元。 |
| 類型變更 | ~ 黃色 | 欄位值的類型改變,如數字變字串、物件變陣列,屬於修改的一種。 |
| 無變化 | 一般 | 兩側完全一致的行,不做特殊標記。 |
為了得到乾淨、有意義的對比結果,可視情況先做以下前處理,避免假差異。
| 場景 | 建議操作 |
|---|---|
| 鍵順序不同 | 對鍵名排序後再對比(或使用語意檢視,從欄位層面比較)。 |
| 陣列順序無所謂 | 先對陣列按內容排序,避免順序變化被判為差異。 |
| 縮排/空白不同 | 無需處理,本工具會自動格式化統一排版。 |
| 含大整數 ID | 確認兩側都用字串傳輸大整數,避免精度丟失導致對不上。 |
| 一側不合法 | 先用 JSON 驗證/修復工具處理成合法 JSON 再對比。 |
本工具所有 JSON 格式化和差異比對都完全在你的瀏覽器本機執行,資料不會上傳到任何伺服器,也不會被記錄或快取到遠端。即使對比包含金鑰、Token、使用者資訊的介面回傳值也很安全,關閉或重新整理頁面後資料即被清除。
最常見原因是陣列元素順序不同,或字串裡存在肉眼難辨的差異(如全形/半形空白、大小寫、結尾空白、換行字元 \r\n 與 \n)。可先對陣列或鍵名排序後再對比;本工具已自動格式化,通常能排除縮排和普通空白造成的假差異。
說明該側內容不是合法 JSON(如缺引號、多尾逗號、含註解、括號未閉合)。請先用 JSON 驗證/修復工具處理成合法 JSON,再回來對比。
多半是兩份資料的鍵順序或陣列順序整體不同,導致逐行錯位。建議先統一排序(物件按鍵名排序、陣列按內容排序)再對比,或改用語意檢視從欄位層面查看真正變化的欄位。
JSON 數字按 IEEE 754 雙精度解析,超過 2^53 的大整數(雪花 ID、訂單號)會丟精度,導致兩側看似相同實則被解析成不同的值。傳輸大整數時應用字串包裹,如 "id": "9007199254740993"。
一側是逸出寫法(\u4e2d\u6587)、另一側是明文中文時,格式化後可能呈現不同。兩者語意相同但文字不同會被標為差異,可在產生端統一是否逸出(如 Python 的 ensure_ascii=False)。