Tài liệu & Hướng dẫn chuyên sâu: So sánh JSON theo cấu trúc (JSON Diff)
1. Tổng quan & Nguyên lý hoạt động
So sánh hai JSON bằng công cụ diff theo dòng thường cho kết quả đầy nhiễu: chỉ cần đổi thứ tự khoá hoặc định dạng lại khoảng trắng, mọi dòng đều bị đánh dấu khác biệt. Công cụ này phân tích cả hai tài liệu rồi so sánh theo cấu trúc: từng khoá, từng giá trị, từng phần tử mảng, và liệt kê chính xác đường dẫn kiểu JSONPath (`$.scripts.test`, `$.tags[2]`) của mỗi thay đổi (thêm, xoá, sửa). Rất hợp để đối chiếu phản hồi API giữa hai phiên bản, file cấu hình hay snapshot test.
2. Ưu thế kiến trúc & Tính năng nổi bật
`{"a":1,"b":2}` và `{ "b": 2, "a": 1 }` được coi là giống hệt. Chỉ thay đổi thực sự về dữ liệu mới được báo cáo.
Mỗi dòng kết quả có huy hiệu Thêm / Xoá / Sửa, đường dẫn đầy đủ và giá trị trước → sau với màu phân biệt. Khoá có ký tự đặc biệt được viết dạng `$["a-b"]`.
"Theo vị trí" so từng phần tử cùng chỉ số; "Bỏ qua thứ tự" coi mảng như tập hợp nên `[1,2,3]` và `[3,2,1]` là giống nhau. Nếu một bên không phải JSON hợp lệ, công cụ chỉ rõ bên nào và thông báo lỗi.
3. Cách đọc đường dẫn thay đổi
Đường dẫn dùng cú pháp giống JSONPath, bắt đầu từ gốc `$`:
| Đường dẫn | Ý nghĩa | Ví dụ |
|---|---|---|
| $.name | Khoá `name` ở cấp gốc | {"name":"a"} |
| $.user.email | Khoá lồng nhau | {"user":{"email":"…"}} |
| $.tags[2] | Phần tử thứ 3 (chỉ số 2) của mảng | {"tags":["a","b","c"]} |
| $["a-b"] | Khoá chứa ký tự không phải định danh | {"a-b":1} |
4. Câu hỏi thường gặp (FAQ)
Giải đáp các thắc mắc phổ biến của lập trình viên khi sử dụng tiện ích So sánh JSON theo cấu trúc (JSON Diff).
5. Công cụ liên quan
- Kiểm tra JSONPhân tích, kiểm tra và khám phá JSON thô dưới dạng cây thu gọn, tô màu theo kiểu dữ liệu.
- So sánh văn bảnSo sánh hai đoạn văn bản và làm nổi bật phần thêm, xóa và thay đổi.
- Chuyển đổi JSON ↔ YAML ↔ TOMLChuyển đổi qua lại giữa JSON, YAML và TOML ngay trên trình duyệt — dữ liệu không rời khỏi máy bạn.
- Kiểm tra JSON SchemaKiểm tra dữ liệu JSON theo JSON Schema và chỉ ra từng lỗi kèm đường dẫn