使用步驟
- 在左側貼上原始 JSON,右側貼上修改後的 JSON。
- 選擇陣列是否需要考慮順序。
- 檢視新增(+)、刪除(−)、修改(~)的列表,也可以複製為文字報告。
引數說明
- 按位置比較
- 陣列元素逐個按下標比較。因此在開頭插入一項,後面每個位置都會顯示為修改。
- 忽略順序
- 把陣列當作無序集合,只報告一邊有而另一邊沒有的元素,適合 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 都在瀏覽器中比較。
隱私說明
本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。