JSON Diff là việc so sánh hai tập dữ liệu JSON để tìm các trường được thêm, xóa và sửa đổi giữa chúng. Trong phát triển hàng ngày, chúng ta thường cần biết 'chính xác thì hai JSON khác nhau ở đâu': cấu trúc phản hồi đã thay đổi gì trước và sau khi nâng cấp API, cấu hình ở hai môi trường khác nhau ở đâu, trường nào bị lệch giữa kết quả thực tế và đường cơ sở mong đợi trong thử nghiệm tự động. Việc kiểm tra thủ công từng dòng chậm và dễ bị lỗi; công cụ JSON Diff có thể tự động tô sáng các khác biệt.
So sánh khác biệt JSON thường theo hai cách tiếp cận. Một là 'khác biệt văn bản' (textual diff): sau khi định dạng JSON thành văn bản nhiều dòng chuẩn, thực hiện so sánh tương tự Git diff từng dòng, hiển thị trực quan các phần thêm, xóa và sửa đổi trên mỗi dòng. Cách khác là 'khác biệt cấu trúc/ngữ nghĩa' (structural diff): phân tích cú pháp JSON thành cấu trúc cây và so sánh từng giá trị và kiểu theo đường dẫn trường (ví dụ: user.address.city), không bị ảnh hưởng bởi thứ tự viết trường, thụt lề hoặc các yếu tố định dạng khác. Công cụ này cung cấp cả Chế độ xem Văn bản và Chế độ xem Ngữ nghĩa, có thể chuyển đổi khi cần.
Tại sao phải định dạng trước khi so sánh? Bởi vì cùng một dữ liệu có thể có định dạng hoàn toàn khác nhau (một dòng so với nhiều dòng, thụt lề 2 khoảng trắng so với 4 khoảng trắng). Nếu so sánh trực tiếp dưới dạng văn bản thô, sẽ xuất hiện nhiều 'khác biệt giả' do các biến thể định dạng gây ra. Công cụ này tự động phân tích cú pháp và định dạng thống nhất cả hai phía trước khi so sánh, do đó loại bỏ nhiễu khoảng trắng để bạn chỉ thấy các thay đổi dữ liệu thực sự có ý nghĩa.
Lưu ý rằng thứ tự khóa trong các đối tượng JSON không quan trọng về mặt ngữ nghĩa ({"a":1,"b":2} tương đương với {"b":2,"a":1}), nhưng thứ tự phần tử mảng thì có ý nghĩa ([1,2] khác với [2,1]). Do đó, khi bạn chỉ quan tâm đến tính nhất quán của nội dung mảng bất kể thứ tự, chúng tôi khuyên bạn nên sắp xếp mảng hoặc sắp xếp khóa trước khi so sánh, để tránh việc thay đổi thứ tự bị xác định nhầm là khác biệt.
Tất cả định dạng và so sánh trong công cụ này được thực hiện cục bộ trong trình duyệt; dữ liệu không bao giờ được tải lên máy chủ. Nó cũng hỗ trợ tô sáng cấp ký tự, đếm số lượng thêm/xóa/sửa đổi, so sánh đồng thời nhiều tab và chia sẻ tình huống so sánh qua URL, phù hợp cho các tình huống tích hợp API, so sánh cấu hình, kiểm định thử nghiệm và Xem lại mã.