tigtools

So sánh JSON

Dán hai tài liệu JSON để xem chính xác những giá trị nào khác nhau, được liệt kê theo đường dẫn như $.order.items[2].price.

Chạy ngay trên trình duyệt Không cần đăng ký

So sánh mảng
Hiển thị

Cách sử dụng

  1. Dán JSON gốc vào bên trái và JSON đã thay đổi vào bên phải, hoặc thử ví dụ.
  2. Chọn cách so sánh mảng: theo vị trí hoặc so khớp các mục để một mục được chèn chỉ được báo cáo một lần.
  3. Đọc khác biệt dưới dạng danh sách hoặc xem song song. Mỗi khác biệt có một đường dẫn từ gốc ($).
  4. Sao chép báo cáo để dán vào ticket hoặc code review.

Cách hoạt động

Cả hai tài liệu được phân tích cú pháp và so sánh dưới dạng dữ liệu, không phải dạng văn bản. Các đối tượng được so sánh theo từng khóa, do đó thứ tự khóa và khoảng trắng hoặc thụt lề không quan trọng. Số được so sánh theo giá trị, vì vậy 1 và 1.0 bằng nhau.

Mỗi khác biệt có một đường dẫn viết dạng biểu thức JSONPath: $ là gốc, .name là một thuộc tính, [2] là chỉ mục mảng, và các khóa không phải tên đơn giản được đặt trong ngoặc kép, như trong $["first-name"]. Bốn loại khác biệt được báo cáo: thêm (chỉ ở bên phải), bị xóa (chỉ ở bên trái), thay đổi (cùng kiểu, khác giá trị) và đổi kiểu (ví dụ số 44.9 trở thành chuỗi "44.90", hoặc một giá trị trở thành null). Khi toàn bộ đối tượng hoặc mảng được thêm hoặc bị xóa, nó được báo cáo một lần tại đường dẫn của chính nó thay vì từng trường một.

Mảng được so sánh theo vị trí theo mặc định: mục 0 với mục 0, mục 1 với mục 1. Nếu một mục được chèn vào đầu, mọi mục phía sau sẽ trông như bị thay đổi. “Khớp các mục đã di chuyển” trước tiên căn chỉnh hai mảng bằng chuỗi con chung dài nhất gồm các mục bằng nhau, do đó việc chèn hoặc xóa chỉ được báo cáo một lần và các mục còn lại được ghép cặp. Các mục được thêm dùng chỉ mục bên phải, các mục bị xóa dùng chỉ mục bên trái. Việc khớp bị bỏ qua đối với mảng rất lớn (trên khoảng 2 triệu cặp mục), lúc đó chúng được so sánh theo vị trí.

Các đường dẫn khóa trong danh sách được sắp xếp theo thứ tự bảng chữ cái trong từng đối tượng. Tối đa 2.000 khác biệt được hiển thị; báo cáo được sao chép luôn chứa tất cả chúng.

Ví dụ

Kiểm tra thay đổi API

So sánh phản hồi của ngày hôm qua và hôm nay cho cùng một đơn hàng. Bản khác biệt cho thấy $.status đã thay đổi từ "pending" thành "shipped", $.total đổi kiểu từ số thành chuỗi, $.coupon bị xóa và $.customer.phone được thêm.

Sai lệch cấu hình

Dán cấu hình JSON từ môi trường staging và production. Vì thứ tự key được bỏ qua, chỉ những khác biệt thực sự như $.cache.ttl 300 → 60 xuất hiện, kể cả khi các tệp do các công cụ khác nhau lưu.

Danh sách có mục được chèn thêm

Một danh sách sản phẩm có thêm mục đầu tiên mới. Theo vị trí, mọi sản phẩm dường như bị thay đổi; với “So khớp các mục bị di chuyển”, kết quả là một mục “Đã thêm $[0]” duy nhất.

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

Công cụ này khác gì so với so sánh văn bản thông thường?

So sánh văn bản so từng dòng, nên việc sắp xếp lại key hoặc định dạng lại sẽ hiển thị thành thay đổi. Công cụ này so sánh dữ liệu đã phân tích cú pháp, nên chỉ báo cáo khác biệt về giá trị, kiểu và cấu trúc.

Tại sao một mảng hiển thị nhiều thay đổi sau khi chèn một mục?

Ở chế độ “Theo vị trí”, các mục được so sánh tại cùng chỉ mục và việc chèn thêm làm dịch chuyển mọi mục phía sau. Hãy chuyển sang “So khớp các mục bị di chuyển” để căn chỉnh các mục giống nhau trước.

Có coi “1” và 1 là bằng nhau không?

Không. Một giá trị là chuỗi, giá trị còn lại là số, nên khác biệt được báo cáo là thay đổi kiểu. Các giá trị cùng kiểu được so sánh chính xác.

Tôi có thể so sánh các tệp rất lớn không?

Các tệp vài megabyte hoạt động tốt, nhưng mọi thứ được xử lý trong bộ nhớ trình duyệt, nên tài liệu rất lớn có thể chậm trên điện thoại.

Quyền riêng tư

Cả hai tài liệu chỉ được phân tích và so sánh trong trình duyệt của bạn. Không có gì được tải lên, lưu trữ hoặc đưa vào phân tích.