logo
GeekFormat

JSON Diff

Compare 1
Original JSON
1{
2 "name": "GeekFormat",
3~ "description": "面向开发者的免费在线工具集",
4~ "version": "1.0.0",
5 "features": [
6 "formatting",
7 "validation",
8~ "diff"
 
9 ],
10 "author": {
11 "name": "GeekFormat",
12 "url": "https://geekformat.com"
13 },
14 "stats": {
15~ "tools": 80,
16~ "languages": 18
17 },
18~ "active": true
19}
+1~6

免費線上 JSON Diff 工具,左右對比兩個 JSON 物件,高亮顯示新增、刪除和修改的欄位。對比前自動格式化並做逐行、逐字元比對,即時統計增刪改數量,提供文字與語意兩種檢視,適合 API 介面接軌、設定檔版本比對和自動化測試資料排查。

相關推薦

適用場景

  • API 介面接軌時對比實際回傳資料和預期 Mock 資料的差異
  • 不同環境(開發/測試/正式)的 JSON 設定檔需要比對版本變化
  • 自動化測試中快速排查回應資料與斷言基準的不一致問題
  • 升級第三方 API 後對比新舊版本回傳結構的變更
  • Code Review 時對比同一份設定或資料模型改動前後的差異
  • 排查線上問題時對比正常與異常兩次請求回傳的 JSON
  • 同步資料時核對來源資料與目標資料是否一致

功能特點

  • 深度差異比對:先自動格式化再逐行、逐字元遞迴對比,精準識別新增、刪除及修改
  • 可視化高亮:紅/綠/黃三色清晰標記刪除、新增、修改,左右同步滾動檢視
  • 字元級高亮:修改的行內會進一步高亮發生變化的具體字元,定位更精細
  • 自動格式化:對比前統一美化兩側 JSON,自動消除縮排和空白差異的干擾
  • 文字 / 語意雙檢視:按行文字對比或按結構語意對比,隨需一鍵切換
  • 差異統計:底部即時統計增/刪/改數量,完全一致時提示「完全相同」
  • 多分頁對比:多組 JSON 同時比較,互不干擾
  • 分享與交換:一鍵生成分享連結、左右內容一鍵互換、任意一側一鍵複製
  • 隱私安全:全程瀏覽器本機執行,資料零上傳,處理含金鑰的回傳值也放心

使用方法

  1. 將兩個 JSON 內容分別貼到左右輸入欄(工具會自動格式化)
  2. 選擇文字檢視或語意檢視,查看紅綠黃高亮標記的差異
  3. 結合底部的增/刪/改統計確認改動規模
  4. 一鍵複製內容或生成分享連結與他人協作排查

常見問題

怎麼快速找出兩個 JSON 檔案之間的差異?

將兩個 JSON 文字分別貼到左右輸入欄中,工具會先自動格式化,再進行逐行、逐字元的深度比對。新增的內容以綠色高亮,刪除的以紅色高亮,修改的行同時顯示新舊值並高亮變化的字元,幫助你瞬間定位資料差異。

對比前需要先手動格式化 JSON 嗎?

不需要。工具在對比前會自動把左右兩側的 JSON 解析並統一格式化(2 空白縮排),因此即使兩份 JSON 的縮排、空白、換行完全不同,只要資料內容一致就不會產生無意義的差異。這相當於自動忽略了空白字元的干擾。

文字檢視和語意檢視有什麼區別?

文字檢視按格式化後的行逐行對比,直觀展示每一行的增刪改,適合快速瀏覽整體變化;語意檢視更側重按 JSON 的結構和欄位進行對比,幫助你從資料含義層面理解哪些欄位發生了變化。兩種檢視可隨時一鍵切換。

陣列中的元素順序不同會被判定為差異嗎?

會。工具按格式化後的內容順序比對,陣列元素順序不同會顯示為差異。如果你只關心內容是否一致而不在意順序,建議先用 JSON 格式化工具的「鍵名排序」或對陣列排序後再來對比,即可避免順序造成的干擾。

這個工具適合哪些具體的開發測試場景?

非常適合以下場景:1) API 接軌:對比實際介面回傳與預期 Mock 資料的差異;2) 設定管理:比對不同環境(開發/正式)的設定檔差異;3) 自動化測試:作為測試斷言的輔助工具,快速排查資料不一致問題;4) 版本升級:對比第三方 API 升級前後回傳結構的變更。

JSON Diff 和 JSON 格式化有什麼區別?

JSON 格式化是將難讀的 JSON 整理成易讀的層級結構,而 JSON Diff 是對比兩個 JSON 之間的差異。兩者經常配合使用:本工具其實已經內建了格式化步驟,會在對比前自動美化兩側內容,讓你專注於差異本身。

對比結果可以分享或複製嗎?

可以。工具支援將目前左右兩側的內容壓縮編碼進 URL,生成可分享連結,對方打開即可看到相同的對比場景,無需上傳伺服器。你也可以一鍵複製任意一側的內容用於程式碼審查或問題追蹤。

可以同時進行多組對比嗎?

可以。工具支援多分頁對比,你可以在不同分頁中分別貼上不同的 JSON 對進行比較,分頁之間互不干擾,方便同時排查多個介面或多份設定的差異。

對比會統計出改了多少處嗎?

會。底部狀態列會即時統計新增、刪除、修改三類差異的數量,一眼就能看出改動規模。如果兩份 JSON 完全一致,會顯示「完全相同」的提示。

對比的資料會上傳到伺服器嗎?

不會。所有格式化和差異比對都完全在瀏覽器本機執行,資料不會上傳到任何伺服器。即使對比包含金鑰、Token 或使用者隱私的介面回傳值也很安全,關閉頁面後資料即被清除。

關於 JSON Diff(JSON 對比)

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 差異類型速查表

對比兩份 JSON 時,差異通常可歸為以下幾類,理解它們有助於快速判斷改動性質。

差異類型標記說明
新增 (Added)+ 綠色新版本中出現、舊版本中沒有的欄位或陣列元素。
刪除 (Removed)− 紅色舊版本中存在、新版本中被移除的欄位或陣列元素。
修改 (Modified)~ 黃色欄位仍在,但值發生了變化,會同時顯示新舊值並高亮變化字元。
類型變更~ 黃色欄位值的類型改變,如數字變字串、物件變陣列,屬於修改的一種。
無變化一般兩側完全一致的行,不做特殊標記。

對比前建議做的前處理

為了得到乾淨、有意義的對比結果,可視情況先做以下前處理,避免假差異。

場景建議操作
鍵順序不同對鍵名排序後再對比(或使用語意檢視,從欄位層面比較)。
陣列順序無所謂先對陣列按內容排序,避免順序變化被判為差異。
縮排/空白不同無需處理,本工具會自動格式化統一排版。
含大整數 ID確認兩側都用字串傳輸大整數,避免精度丟失導致對不上。
一側不合法先用 JSON 驗證/修復工具處理成合法 JSON 再對比。

Privacy & Security

本工具所有 JSON 格式化和差異比對都完全在你的瀏覽器本機執行,資料不會上傳到任何伺服器,也不會被記錄或快取到遠端。即使對比包含金鑰、Token、使用者資訊的介面回傳值也很安全,關閉或重新整理頁面後資料即被清除。

Authoritative References

Troubleshooting

明明資料一樣,卻提示有差異

最常見原因是陣列元素順序不同,或字串裡存在肉眼難辨的差異(如全形/半形空白、大小寫、結尾空白、換行字元 \r\n 與 \n)。可先對陣列或鍵名排序後再對比;本工具已自動格式化,通常能排除縮排和普通空白造成的假差異。

對比一側報解析錯誤 / 無法對比

說明該側內容不是合法 JSON(如缺引號、多尾逗號、含註解、括號未閉合)。請先用 JSON 驗證/修復工具處理成合法 JSON,再回來對比。

差異太多、幾乎每行都標紅標綠

多半是兩份資料的鍵順序或陣列順序整體不同,導致逐行錯位。建議先統一排序(物件按鍵名排序、陣列按內容排序)再對比,或改用語意檢視從欄位層面查看真正變化的欄位。

大數字對不上(如 ID 末位不同或變成科學記號)

JSON 數字按 IEEE 754 雙精度解析,超過 2^53 的大整數(雪花 ID、訂單號)會丟精度,導致兩側看似相同實則被解析成不同的值。傳輸大整數時應用字串包裹,如 "id": "9007199254740993"。

中文顯示為 \uXXXX 導致看起來不一致

一側是逸出寫法(\u4e2d\u6587)、另一側是明文中文時,格式化後可能呈現不同。兩者語意相同但文字不同會被標為差異,可在產生端統一是否逸出(如 Python 的 ensure_ascii=False)。