JSON Diff 線上對比

本地處理
app.diff.view

也可透過 #data={"name":"Ada"}#url=... 灌入資料,讀完即從位址列清除。

左右兩欄貼兩份 JSON,按結構對比欄位是新增、刪除還是值變化。比純文字 Diff 更適合介面升級、配置變更這類「結構相同但值不同」的場景。釋出前把 v1 / v2 樣例響應貼進來,比在 Git 裡對壓縮單行做 diff 更不容易漏巢狀欄位。

語義對比

關注路徑上的差異,而不是某一行空格有沒有對齊。兩邊縮排不同、鍵順序不同時,結構化對比通常比文字 Diff 噪音更少。

結果裡會標出新增、修改、刪除,並可篩選只看某一類變化。

適合審查變更

看清哪些 Key 變了,再決定要不要改客戶端。型別從數字變成字串、欄位被刪掉,都比肉眼掃 500 行可靠。

測試同學也可以拿 baseline 和當前響應做迴歸抽查。

對比前可先排序

Key 順序不穩定時,可先用排序工具再貼進來。陣列若只是集合而無順序約定,順序變化可能是假陽性,需結合業務判斷。

敏感欄位建議先脫敏再對比,即使本頁不上傳資料。

示例

左側 A
{
  "name": "Alice",
  "age": 30,
  "tags": ["dev", "json"]
}
右側 B(相對 A 的變化)
{
  "name": "Alice",
  "age": 31,
  "tags": ["dev", "tools"],
  "active": true
}
陣列順序算差異嗎?

會按位置比較。兩個列表只是元素順序不同,也會標出來。

很大的檔案怎麼辦?

對比發生在你這臺電腦上。體積很大時先用 JSONPath 抽出相關片段再比。

完全相同會顯示什麼?

會提示兩份 JSON 完全相同,沒有高亮差異項。

null 和缺欄位一樣嗎?

不一樣。一邊是 null 、一邊沒有這個鍵,會分別標記,語義也不同。

推薦工作流

  1. 準備舊版(A)和新版(B)樣例,必要時先分別格式化。
  2. 點「執行對比」,按新增 / 修改 / 刪除篩選。
  3. 把需要寫進 CHANGELOG 或測試斷言的路徑記下來。
  4. 若只是鍵順序不同,先到排序頁處理兩側再比一次。

Diff 看「兩份資料差在哪」;Schema 看「是否符合約定」。介面升級建議兩樣都做。