Cách so sánh JSON
- 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.
- 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. - 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:
- Bỏ qua thứ tự khóa –
{"a":1,"b":2}bằng{"b":2,"a":1}. - Bỏ qua định dạng – dấu cách, xuống dòng và thụt lề không tạo ra khác biệt.
- So sánh số theo giá trị –
1.0bằng1. - Căn chỉnh mảng – chèn thêm một phần tử không khiến mọi phần tử phía sau bị đánh dấu là thay đổi, và các đối tượng bị sửa được ghép với đối tượng tương ứng giống nhất.
- Bỏ qua thứ tự mảng – so sánh mảng như tập hợp không có thứ tự, hữu ích cho danh sách tag, ID hoặc quyền truy cập.
Cách đọc kết quả so sánh
| Nhãn | Ý nghĩa | Đường dẫn trỏ tới |
|---|---|---|
| Đã thêm | Giá trị chỉ có trong JSON đã thay đổi | vị trí của nó trong JSON đã thay đổi |
| Đã xóa | Giá trị chỉ có trong JSON gốc | vị trí của nó trong JSON gốc |
| Đã thay đổi | Cả hai tài liệu đều có khóa này nhưng khác giá trị hoặc khác kiểu | vị 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.