所有指南
開發者

比較 JSON,不受鍵值順序干擾

重新排序的鍵值可能隱藏單一值的變更。比較資料時,保持陣列順序有意義。

兩個 JSON 回應可能包含相同的資料,但外觀卻截然不同,因為某個匯出工具改變了鍵的順序。將兩邊格式化,並忽略物件鍵順序,就能更容易看出實際的數值變更。

在 Text & JSON compare 中,選擇 JSON,將第一個回應貼到 原始,第二個貼到 已更新,然後保持 忽略物件鍵順序 開啟。比較結果會自動更新。

移除鍵順序雜訊

試試這兩個版本:

{"name":"Launch","settings":{"public":true,"retries":3},"steps":["draft","review","publish"]}
{"steps":["draft","review","publish"],"settings":{"retries":3,"public":true},"name":"Launch"}

鍵在頂層和 settings 內部都移動了。開啟此選項後,結果是 沒有差異。關閉它,這些移動就會再次顯示。JSON 模式無論如何都會格式化兩邊,因此縮排本身不會產生變更。

你可以下載 原始、重新排序的回應 和 正規化版本。鍵排序會影響比較顯示;它不會覆寫你貼上的內容。

保持陣列的原始順序

物件是具名值的集合;陣列是有序的序列。這個區別是 JSON 規範 的一部分。

將 已更新 中的陣列替換為:

["review","draft","publish"]

工具現在會顯示 變更,即使在忽略物件鍵順序時也是如此。將 review 移到 draft 之前,對這個工作流程來說是實質的變更。陣列重新排序的回應 讓你可以不用編輯較大的範例就能試試看。

除非你的應用程式明確將陣列視為無序集合,否則不要為了消除差異而排序陣列。顯示順序、優先順序和處理順序可能都依賴於它。

接下來尋找變更的數值

將 數值變更的回應 載入 已更新。它的鍵已重新排序,但也將 retries 從 3 改為 4。移除鍵順序雜訊後,剩下的差異就是那個設定。

當你有足夠的螢幕空間時,使用 並排。行內 會將移除和新增的行放在同一欄,通常在手機上更容易閱讀。減號和加號標記有助於區分變更,而不僅依賴顏色。

排序不會移除字串內部的空格。像 "Launch " 這樣的值仍然不同於 "Launch"。

了解這裡的「沒有差異」含義

這是格式化文字比較,不是 JSON 等價性的通用測試。它保留數字寫法和字串跳脫:1 和 1.0 仍然不同,"a" 和 "\u0061" 也是如此,即使許多應用程式將每對解釋為相同的值。

重複的鍵會停止 JSON 比較,而不是靜默丟棄其中一個值。使用 JSON formatter 在再次比較之前定位並解決它們。原始 或 已更新 旁的錯誤會指出哪個輸入需要處理。

在 2026 年 10 月 12 日,我們使用工具所用的相同 JSON 解析器和格式化器檢查了範例:開啟排序時,重新排序的鍵會匹配;變更的陣列、數值、數字寫法和跳脫拼寫則不會。結果檔案 記錄了所有六個比較和檔案雜湊。