第一份 貼上,或選一個 .json 檔案
第二份 要檢查的那個版本
每個月都要做一遍? 在 TableDI 2 裡做一次、存成作業,下個月再跑一次。 免費下載 TableDI 2
不會上傳任何東西。檔案由這個分頁的 JavaScript 讀取,不會離開你的電腦 —— 沒有任何伺服器看得到,關掉分頁資料就沒了。
比對兩份 JSON 的步驟
- 放進兩份文件. 直接貼上,或在兩個方框下方各選一個 .json 檔案,也可以把檔案拖到方框上。兩份都在這個分頁裡解析。
- 看路徑. 每一列是一處差異:在哪個路徑、是新增、刪除還是變更,以及兩邊各是什麼值。
- 寫法差異不會出現. 鍵的順序不同、縮排不同,一列都不會產生。清單上只有真正改變內容的地方。
- 帶走清單. 下載成 differences.csv,或按複製貼進工單、程式碼審查的留言裡。
為什麼文字比對會把同一份 JSON 判成全部不同
{"b":1,"a":2} 和 {"a":2,"b":1} 是同一個物件。
幾乎每個 JSON 程式庫重新輸出時,鍵的順序都可能變;再加上縮排兩格或四格、檔尾有沒有換行,
用逐行比對的工具去看同一筆資料的兩次匯出,常常整頁都是紅的。
這一頁先把兩邊都解析成資料結構,再比較解析後的值。鍵的順序與格式不會產生任何一列差異, 剩下的才是會讓接收端行為改變的不同。
中文被跳脫成 \uXXXX,也算同一個字
很多後端預設把非 ASCII 字元跳脫輸出,所以 API 回應裡的「台北市」常常長成
"\u53f0\u5317\u5e02",而另一個系統匯出的同一筆資料寫的是原本的中文。
純文字比對會說這兩行不同。這裡解析之後兩者是同一個字串,不會被列成差異;
結果表裡顯示的也是解開後的中文,不是一串跳脫碼。
反過來,真正不同的字元一定會被列出來。全形數字 "123" 和半形 "123"、
「台」和「臺」,在 JSON 裡都是不同的字串,這個工具不會替你把它們視為相同。
陣列看順序,物件不看
JSON 物件的鍵是一個集合,順序沒有意義;陣列的元素是一個序列,順序本身就是意義。
所以 [1,2,3] 對 [3,2,1] 會回報兩個位置有變更,而上面那兩個物件被判定為相同。
在陣列尾端多加一個元素,只會出現一列 path[2] 的新增,不會把後面全部判成改寫。
型別照實比,不幫你轉換
5 和 "5" 不同,false 和 0 不同,
null 和「這個鍵不存在」也不同。這幾組正是 API 在小改版時最常悄悄改掉、
而寬鬆比對會藏起來的東西,這裡全部會列出來。
每一處差異都有地址
結果是一張清單,不是左右兩欄讓你自己對。每一列都帶著路徑,用 / 分隔層級、
陣列索引寫在中括號裡,例如 billing/regions[2],可以直接貼進工單,或拿去原始檔搜尋。
比較大的子樹會摘要成 {4 fields}、[9 items] 這種形式,
告訴你形狀變了,底下的列再告訴你怎麼變。
這個工具不做的事
- 不合併。它只回報差異,不會產生第三份文件。
- 不依 id 對應陣列元素。陣列一律依位置比。兩份檔案裡是同一批紀錄、但排序不同時,先依鍵排序再比; 如果資料本來就是表格,比較兩個 Excel 可以用鍵欄對應列。
- 不修復壞掉的 JSON。解析失敗時會顯示解析器指出的位置,不會猜。尾端多一個逗號、用了單引號,都會被這樣擋下來。
- 超過 16 位數的數字不保證精準。瀏覽器的 JSON 解析把數字讀成雙精度浮點數, 19 位數的訂單編號如果是以數字(沒有引號)寫的,兩個只差最後幾位的值可能被判成相同。用字串寫的編號不受影響。
- 選檔案時一律以 UTF-8 讀取。JSON 的標準編碼本來就是 UTF-8;如果手上有 Big5 存的 .json, 請先在編輯器裡另存成 UTF-8,或直接把內容貼進方框。
資料留在這個分頁
會被拿去比對的 JSON,通常是 API 回應、設定檔或匯出資料 —— 裡面常有金鑰、權杖和客戶紀錄。 兩份文件都由你電腦上執行的 JavaScript 解析與比較,沒有任何請求帶著它們送出。
如果同一個介面每個月都要拿新舊兩份回應核對一次,那就不只是一次比對了。TableDI 2 是一套桌面軟體,專做每期都要重來一遍的表格工作:來源、規則和交付方式存成一個作業,下個月把新檔案放進去再跑一次。全部在你自己的電腦上執行。
常見問題
兩個看起來不一樣的檔案,為什麼判定為相同?
因為差在格式或鍵的順序,兩者都不改變文件的意義。中文寫成 \uXXXX 跳脫碼或直接寫中文,解析後也是同一個值。如果你要的是逐字元的比較,那是文字比對,不是這個工具。
JSON 檔案很大也可以比嗎?
幾 MB 的檔案可以在分頁裡解析與比較。預覽只列前 300 處差異,下載的 CSV 包含全部,所以有幾千處變更的文件也還讀得下去。
兩個 JSON 陣列裡的紀錄順序不同,可以比嗎?
可以比,但會依位置比。同樣的紀錄換了順序,會被回報成很多位置有變更。先把兩份都依 id 排序再比,位置就是陣列唯一帶有的順序。
支援 JSON Lines 或 JSON5 嗎?
不支援,只吃標準 JSON。JSON Lines 是一行一份文件,請取單獨一行來比,或先轉成正式的陣列。註解和尾端逗號會被當成解析錯誤,並顯示位置。
檔案會被上傳嗎?
不會。兩份文件都由這個分頁裡的 JavaScript 解析。頁面本身會載入兩個訪客計數器(static.cloudflareinsights.com 與本站的 /_vercel/insights),但使用工具時,網路分頁裡不會出現任何帶著你資料的請求。
相關頁面
每個月都要做一遍?
在 TableDI 2 裡先做一次,再存成作業。下個月把新檔案放進去再跑一次。
macOS(Apple 晶片與 Intel);Windows 版還在做(在那之前怎麼辦)。免費版不是試用:不用註冊,不用綁卡。
2026-09-11 由 TableDI 團隊最後檢查。這一頁有錯嗎?告訴我們 —— 只有一個收件匣,由做 TableDI 的人自己看。