跳到正文
馬克工具箱

JSON 對比

準確找出兩個版本的配置檔案、介面返回或資料檔案之間改了什麼。差異按路徑列出(如 $.users[2].email),調整鍵的順序或重新格式化都不會被當成修改。

在瀏覽器本地執行,輸入的內容和檔案都不會上傳

在兩側都貼上 JSON 後即可比較。

使用步驟

  1. 在左側貼上原始 JSON,右側貼上修改後的 JSON。
  2. 選擇陣列是否需要考慮順序。
  3. 檢視新增(+)、刪除(−)、修改(~)的列表,也可以複製為文字報告。

引數說明

按位置比較
陣列元素逐個按下標比較。因此在開頭插入一項,後面每個位置都會顯示為修改。
忽略順序
把陣列當作無序集合,只報告一邊有而另一邊沒有的元素,適合 ID 列表、標籤或記錄列表。
路徑
使用 JSONPath 寫法:$ 表示根,.key 表示屬性,[0] 表示陣列元素,["a b"] 表示不是普通名稱的鍵。

示例

看下面兩份文件,鍵的順序不同,部分值也不同:

{"name": "Ada", "age": 36, "tags": ["x", "y"], "address": {"city": "Rome"}, "first name": "A"}
{"age": 37, "name": "Ada", "tags": ["y", "x"], "address": {"city": "Rome", "zip": "00100"}, "first name": "B", "role": "admin"}

按位置比較,結果如下:

變更 路徑 修改前 修改後
~ $.age 36 37
~ $.tags[0] “x” “y”
~ $.tags[1] “y” “x”
+ $.address.zip “00100”
~ $["first name"] “A” “B”
+ $.role “admin”

開啟「忽略順序」後,兩條 tags 的變更會消失,因為兩個數組裡裝的是同樣的兩個值。兩種模式下,鍵的順序都沒有影響。如果某個值的型別發生變化,例如數字變成字串,或物件變成陣列,則在它自己的路徑上報告為一處變更。

常見問題

和文字對比有什麼區別?

文字對比按行比較,格式和鍵順序的變化都會顯示出來。JSON 對比會解析兩邊的資料,只比較內容本身。

1 和 "1" 算相同嗎?

不算。數字和字串是不同的 JSON 值,會作為修改列出兩邊的值。

資料會上傳嗎?

不會,兩份 JSON 都在瀏覽器中比較。

隱私說明

本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。

相關工具