JSON 比較工具

免費線上 JSON 比對:貼上兩份 JSON,列出每個新增、刪除、修改的欄位路徑與前後的值,欄位順序不算差異、陣列也可不看順序。

立即使用JSON 比較工具(免費、免註冊)

左邊貼原本的 JSON、右邊貼新的,按「開始比對」就列出每個新增、刪除、修改的欄位路徑(例如 $.address.city)與前後的值;欄位順序不同不算差異,勾「陣列不看順序」後陣列元素換位置也不算。也能切成逐行對照、複製差異清單。全部在瀏覽器比對,內容不會上傳。

差異清單長什麼樣子

用一筆會員資料示範:B 把 id 與 name 的順序對調、tags 換了順序又多一個、城市改了、多了電話欄位。

A(原本的)

{
  "id": 1024,
  "name": "王小明",
  "tags": [
    "vip",
    "newsletter"
  ],
  "address": {
    "city": "台北市"
  }
}

B(新的)

{
  "name": "王小明",
  "id": 1024,
  "tags": [
    "newsletter",
    "vip",
    "beta"
  ],
  "address": {
    "city": "新北市"
  },
  "phone": "0912-345-678"
}

陣列照位置比(預設)

修改 $.tags[0]: "vip" → "newsletter"
修改 $.tags[1]: "newsletter" → "vip"
新增 $.tags[2]: "beta"
修改 $.address.city: "台北市" → "新北市"
新增 $.phone: "0912-345-678"

勾「陣列不看順序」

新增 $.tags[2]: "beta"
修改 $.address.city: "台北市" → "新北市"
新增 $.phone: "0912-345-678"

id、name 只是順序不同,兩種模式都不會列出來。tags 照位置比時,第 0、1 格的值互換會被算成修改;不看順序時只剩真的多出來的 beta。

比對的規則

什麼算差異、什麼不算
情況算不算差異
物件欄位順序不同不算
同一個數字不同寫法(1 與 1.0、1e2 與 100)不算
很長的整數 ID 差最後一位(9007199254740993 與 9007199254740992)算(保留每一位數比對)
字串內容相同、寫法不同(\u4e2d 與「中」)不算
陣列元素順序不同預設算;勾「陣列不看順序」就不算
同一個物件裡出現兩個同名欄位以最後一個為準(跟 JSON.parse 一樣)
值的型別不同("1" 與 1)算,列為修改

差異清單與逐行對照用的是同一套規則,兩邊的結論不會互相矛盾。

路徑怎麼看

  • $:代表整份 JSON 的最外層。
  • .欄位名:物件裡的欄位,例如 $.user.email。欄位名有空格或特殊字元時寫成 $["first name"]。
  • [數字]:陣列的第幾個元素,從 0 開始,例如 $.items[2] 是第三個。「新增」看的是 B 的位置,「刪除」看的是 A 的位置。

整個物件或陣列被加進來或拿掉時,只列一行(值太長會截斷),不會把裡面每個欄位都展開。

差異清單適合找「哪個欄位變了」;想看完整的上下文,切到「逐行對照」:兩邊都先把欄位依名稱排好再逐行比,新增的行標綠色、刪除的行標紅色刪除線。

常見的用法

  • API 改版:把舊版與新版的回應各貼一份,確認只改了預期的欄位。
  • 設定檔:比對兩個環境(測試與正式)的設定 JSON,找出不一樣的參數。
  • 測試資料:預期結果與實際結果對照,複製差異清單貼進問題回報。
  • 後台資料改前改後:同一筆資料修改前後各匯出一份 JSON,一眼看出被改了哪些欄位。

格式錯誤時會指出是左側還是右側、第幾行第幾字;常見原因是結尾多了逗號、字串用單引號、少了括號。JSON 很大時比對在你的電腦上進行,速度取決於裝置。

JSON 比較工具功能特點

  • 依結構比對:每個差異列出路徑(例如 $.user.tags[2])與前後的值,分成修改、新增、刪除
  • 欄位依名稱排序後再比,欄位順序不同不算差異
  • 可選「陣列不看順序」:[1,2] 與 [2,1] 視為相同
  • 也能切換成逐行對照:新增綠色、刪除紅色
  • 差異清單一鍵複製
  • 自動檢查 JSON 格式,錯了會說是左邊還是右邊、第幾行第幾字
  • 超過 2^53 的大整數(例如 ID)照實比對,不會把不同的數字當成一樣
  • 格式化、左右交換、載入範例、開啟 .json 檔
  • 在瀏覽器處理,不上傳

如何使用JSON 比較工具?

  1. 左邊貼上原本的 JSON、右邊貼上新的(或開啟 .json 檔)
  2. 需要時勾「陣列不看順序」
  3. 按「開始比對」
  4. 在差異清單看每個欄位怎麼變,或切到逐行對照;可複製清單

JSON 比較工具常見問題

欄位順序不同會算差異嗎?

不會。比對前會把物件的欄位依名稱排序,{"a":1,"b":2} 和 {"b":2,"a":1} 視為相同。陣列裡元素的順序預設仍然算,[1,2] 和 [2,1] 會顯示差異;勾選「陣列不看順序」就視為相同。

很長的數字 ID 比得出差異嗎?

比得出來。一般用 JSON.parse 比對的工具,超過 2^53 的整數會失真,9007199254740993 和 9007199254740992 會被當成一樣;本工具保留大整數的每一位數再比。1.0 和 1 這種同一個數字的不同寫法則視為相同。

改了一個值會怎麼顯示?

差異清單會列一行「修改」,寫出欄位路徑(例如 $.address.city)與 A、B 兩邊的值;切到逐行對照則是原本那一行標紅色刪除線、新的那一行標綠色。

有長度或次數限制嗎?

長度沒有另外設限,比對在瀏覽器裡進行,很大的 JSON 會比較慢。不登入每天可以比對 3 次,免費登入後每天 10 次。

JSON 格式錯誤怎麼辦?

比對前會先解析兩邊的 JSON,格式不對會顯示是左側還是右側、第幾行第幾字有問題。常見原因是結尾多了逗號、字串用單引號、或少了括號。

可以直接開啟 .json 檔比對嗎?

可以。兩個輸入框右上角各有開檔按鈕,選好兩個 .json 檔再按「開始比對」即可;檔案在瀏覽器裡讀取,不會上傳。

可以比對 YAML、XML 或 CSV 嗎?

這個工具只讀 JSON。YAML、XML 要先轉成 JSON 再比;如果只是兩份純文字或設定檔想看哪幾行不同,用站上的文字比對工具即可,它逐字、逐行都能比。

差異清單可以匯出嗎?

按結果右上角的複製鈕,差異清單會以「修改 路徑: 舊值 → 新值」一行一筆的文字放進剪貼簿,可以貼到問題回報、Email 或文件。