Công cụ
VI

So sánh 2 file JSON

Dán hai tài liệu JSON để tìm mọi khác biệt. Phép so sánh theo ngữ nghĩa bỏ qua thứ tự khóa và định dạng, liệt kê từng thay đổi kèm đường dẫn JSON; chế độ xem song song tô sáng các dòng đã thay đổi.

JSON gốc

JSON đã thay đổi

Riêng tư: dữ liệu của bạn được xử lý ngay trong trình duyệt và không bao giờ được tải lên.

Cách so sánh JSON

  1. Dán JSON gốc vào bên trái và JSON đã thay đổi vào bên phải, hoặc kéo thả file vào từng bên.
  2. Xem phần tóm tắt và danh sách khác biệt: mỗi giá trị được thêm, bị xóa hoặc thay đổi đều hiển thị kèm đường dẫn, ví dụ $.users[2].email.
  3. Cuộn xuống chế độ xem song song để thấy các thay đổi trong ngữ cảnh. Đánh dấu Bỏ qua thứ tự mảng nếu thứ tự các phần tử trong danh sách không quan trọng.

JSON diff theo ngữ nghĩa thay vì so sánh văn bản

Công cụ diff văn bản thông thường báo thay đổi mỗi khi một khóa đổi chỗ, thụt lề khác đi hoặc một con số được viết theo cách khác. JSON diff này so sánh chính dữ liệu:

Cách đọc kết quả so sánh

NhãnÝ nghĩaĐường dẫn trỏ tới
Đã thêmGiá trị chỉ có trong JSON đã thay đổivị trí của nó trong JSON đã thay đổi
Đã xóaGiá trị chỉ có trong JSON gốcvị trí của nó trong JSON gốc
Đã thay đổiCả hai tài liệu đều có khóa này nhưng khác giá trị hoặc khác kiểuvị trí của nó trong JSON đã thay đổi

Trong chế độ xem song song, cả hai tài liệu được định dạng với khóa đã sắp xếp để các dòng tương ứng nằm đối diện nhau; những đoạn dài không thay đổi sẽ được thu gọn, trừ khi bạn bỏ chọn Ẩn các dòng không đổi.

Câu hỏi thường gặp

Thứ tự khóa có quan trọng không?

Không. Theo định nghĩa, đối tượng JSON không có thứ tự, nên phép so sánh bỏ qua thứ tự khóa. Mảng thì có thứ tự, trừ khi bạn đánh dấu Bỏ qua thứ tự mảng.

Có so sánh được file JSON lớn không?

Có. Việc so sánh chạy ngay trên trình duyệt và liệt kê 200 khác biệt đầu tiên, kèm nút để hiện tất cả; chế độ xem song song hiển thị tối đa 5.000 dòng.

Làm sao để so sánh JSON trong code?

Trong Python, json.loads(a) == json.loads(b) kiểm tra hai giá trị có bằng nhau không. JavaScript không có sẵn hàm so sánh sâu; các thư viện như Lodash cung cấp _.isEqual(a, b). Trên dòng lệnh, diff <(jq -S . a.json) <(jq -S . b.json) hiển thị các dòng khác nhau.

Dữ liệu của tôi có bị tải lên không?

Không. Cả hai tài liệu được so sánh cục bộ trên trình duyệt và không bao giờ rời khỏi thiết bị của bạn.