JSON
JSON Diff / Compare
So sánh hai tài liệu JSON — những gì đã được thêm, xóa hoặc thay đổi, kèm đường dẫn chính xác đến từng khác biệt.
Unlike a plain text diff, JSON Diff compares two documents by structure rather than by line: it understands that key order in an object doesn't matter, and it shows the exact path (e.g. user.address.city) to every difference.
How to use it
- Paste the original JSON into one field and the new version into the other.
- The result lists added, removed, and changed fields with the exact path to each and its old and new value.
- Formatting and key order don't affect the result — only the underlying data structure is compared.
Common uses
- Checking exactly what changed in an API response between two versions or two requests.
- Comparing configuration files (package.json, app settings) across branches or environments.
- Debugging a failing test by precisely comparing the expected and actual JSON output.
Things to keep in mind
Array elements are usually compared by position (index) — inserting one element near the start can show every following item as "changed", even though they merely shifted.
The comparison is structural, not textual — two JSON documents with identical data but different formatting or key order are treated as the same.
Bài viết về công cụ này: JSON Diff: so sánh cấu trúc khác gì so sánh văn bản
Câu hỏi thường gặp
Công cụ này xác định thế nào là "khác biệt" ra sao?
Nó so sánh đệ quy cả hai cấu trúc JSON theo từng khóa và từng chỉ số, báo cáo các giá trị được thêm, xóa và thay đổi — thứ tự khóa của object bị bỏ qua, nhưng thứ tự phần tử mảng lại quan trọng.
Vì sao sắp xếp lại các phần tử mảng lại hiện ra như một thay đổi?
Mảng JSON có thứ tự, nên một phần tử chuyển từ chỉ số 2 sang chỉ số 0 được coi là xóa rồi thêm lại, chứ không phải không có thay đổi, dù giá trị giống hệt nhau.
Dữ liệu JSON của tôi có được gửi đi đâu để tính diff không?
Không. Việc so sánh diễn ra hoàn toàn trong trình duyệt của bạn — không tệp nào được tải lên máy chủ.
Kết quả so sánh có tính đến thứ tự khóa của object không?
Không, so sánh cấu trúc chỉ xem xét dữ liệu thực sự — sự tồn tại của trường, giá trị và kiểu của nó. Thứ tự khóa trong object JSON không có ý nghĩa về mặt ngữ nghĩa, nên không ảnh hưởng đến kết quả.
Có thể so sánh phần tử mảng theo id thay vì theo vị trí không?
Điều này phụ thuộc vào thuật toán so sánh cụ thể. Các công cụ diff đơn giản luôn đối chiếu phần tử mảng theo chỉ số; các công cụ phức tạp hơn cố gắng khớp object theo một trường chung như id để hiển thị chính xác hơn việc chèn hay xóa.