JSON 比對是什麼?
一般的文字比對會因為排版、縮排或 key 的順序不同而顯示一堆差異。本工具先把兩邊解析成 JSON 結構再比較,只列出真正不同的資料,例如 API 改版前後的回應、兩個環境的設定檔。
如何使用
- 左邊貼上原本的 JSON,右邊貼上新的 JSON,開啟「自動比對」時會立即列出差異。
- 每一筆差異會標示類型(新增、刪除、修改)與 JSON Path,例如
$.order.items[0].price。 - 點選差異,左右兩邊會標出位置;按「複製報告」可以貼到 PR 或文件中。
比對規則
- 物件依 key 比對:key 的順序不同不算差異。
- 陣列依位置比對:第 1 個比第 1 個,順序不同會顯示為修改。
- 數字依數值比較:
1.0與1、1e2與100視為相同,大數字也不會失去精度;關閉此選項則比較原始寫法。 - 字串依內容比較:
"中"與"中"視為相同。
範例
原本 {"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 格式化的「修復」功能處理。