JSON 比對

依結構比對兩份 JSON:忽略 key 順序、數字依數值比較,列出每一個新增、刪除與修改的欄位及其 JSON Path。

差異

在左右兩邊輸入 JSON,就會列出差異。

類型 路徑 原本 新的

點選任一列,會在左右兩邊標出位置。

JSON 比對是什麼?

一般的文字比對會因為排版、縮排或 key 的順序不同而顯示一堆差異。本工具先把兩邊解析成 JSON 結構再比較,只列出真正不同的資料,例如 API 改版前後的回應、兩個環境的設定檔。

如何使用

  1. 左邊貼上原本的 JSON,右邊貼上新的 JSON,開啟「自動比對」時會立即列出差異。
  2. 每一筆差異會標示類型(新增、刪除、修改)與 JSON Path,例如 $.order.items[0].price。
  3. 點選差異,左右兩邊會標出位置;按「複製報告」可以貼到 PR 或文件中。

比對規則

範例

原本 {"name":"Keyboard","price":980.00,"tags":["office","usb"]},新的 {"price":980,"name":"Keyboard Pro","tags":["office","bluetooth"],"color":"black"},報告為:

~ $.name: "Keyboard" → "Keyboard Pro"
~ $.tags[1]: "usb" → "bluetooth"
+ $.color: "black"

price 從 980.00 變成 980,數值相同,所以不列出。

常見問題

報告開頭的 + - ~ 是什麼意思?

+ 是右邊新增的欄位,- 是右邊刪除的欄位,~ 是兩邊都有但值不同,箭頭左邊是原本的值、右邊是新的值。

陣列順序不同,為什麼顯示很多差異?

陣列在 JSON 中是有順序的,[1, 2] 與 [2, 1] 是不同的資料,所以會逐一比較每個位置。若順序不重要,可以先在產生 JSON 的程式中排序再比對。

JSON 有錯誤時怎麼辦?

訊息會說明是左邊還是右邊有錯,以及錯誤的行號與欄位,按「跳到錯誤位置」即可找到。若是少了逗號、多了逗號這類錯誤,可以先用 JSON 格式化的「修復」功能處理。