Công cụ so sánh JSON

So sánh hai tài liệu JSON theo cấu trúc, không theo văn bản

So sánh cấu trúc: bỏ qua thứ tự khóa và cách thụt lề
JSON gốc
JSON đã đổi
Khác biệt
Dán JSON vào cả hai khung để so sánh.

Hướng dẫn công cụ

Về Công cụ so sánh JSON

Công cụ so sánh JSON đối chiếu hai tài liệu theo cấu trúc thay vì theo văn bản, nhờ đó bạn thấy được điều gì đã thay đổi trong dữ liệu chứ không phải trong cách định dạng.

Dán JSON gốc ở một bên và JSON đã sửa ở bên kia, kết quả so sánh sẽ cập nhật ngay thành một bảng các giá trị được thêm, bị xóa và bị thay đổi, kèm đường dẫn của từng mục.

Cách dùng công cụ JSON Diff

  1. Dán tài liệu gốc vào ô nhập thứ nhất và tài liệu đã thay đổi vào ô thứ hai.
  2. Đọc các bộ đếm tổng hợp ở phía trên, hiển thị dạng +N -N ~N, để nắm quy mô của thay đổi.
  3. Rà bảng kết quả: loại thay đổi, đường dẫn, giá trị trước, giá trị sau.
  4. Lần theo một đường dẫn như a.b[2] để quay lại file nguồn của bạn; các khóa nối với nhau bằng dấu chấm và mảng dùng chỉ số.

Khi nào bạn cần dùng

  • So sánh cấu hình giữa hai môi trường, chẳng hạn file cấu hình JSON của staging với bản của production.
  • Xem một phản hồi API đã thay đổi ra sao giữa hai phiên bản của dịch vụ trước khi bạn dựa vào cấu trúc mới.
  • Điều tra xem điều gì thực sự đã đổi bên trong một package-lock.json hoặc một manifest phụ thuộc được sinh tự động khác.
  • Kiểm tra xem một công cụ đã thay đổi gì sau khi nó ghi lại một file hạ tầng dạng mã hoặc một manifest Kubernetes.

Cách đường dẫn và loại thay đổi được báo cáo

Mỗi dòng trỏ tới đúng một vị trí trong tài liệu, được viết theo cách bạn sẽ đọc giá trị đó trong mã nguồn nên rất dễ tìm lại trong file gốc.

  • Thêm: đường dẫn chỉ tồn tại trong tài liệu đã thay đổi, và cột giá trị sau hiển thị giá trị mới.
  • Xóa: đường dẫn chỉ tồn tại trong tài liệu gốc, và cột giá trị trước hiển thị thứ đã từng ở đó.
  • Thay đổi: đường dẫn tồn tại ở cả hai bên với giá trị khác nhau, nên cả hai cột đều được điền.
  • Một đường dẫn như a.b[2] nghĩa là khóa b bên trong đối tượng a, rồi tới phần tử ở chỉ số 2 của mảng đó.

Câu hỏi thường gặp về So sánh JSON

Vì sao định dạng lại file mà không sinh ra khác biệt nào?
Vì cả hai bên đều được phân tích trước. Thụt lề, thứ tự khóa và ký tự xuống dòng không thuộc về cấu trúc đã phân tích, nên chúng không bao giờ xuất hiện như một khác biệt.
Vì sao chèn thêm một phần tử mảng lại khiến mọi thứ phía sau nó bị đánh dấu là thay đổi?
Mảng được so sánh theo chỉ số. Một lần chèn sẽ đẩy mọi phần tử phía sau sang vị trí mới, nên mỗi vị trí bị dịch đều được báo là một thay đổi. Đó là bản chất của việc so sánh theo vị trí, không phải khiếm khuyết.
Điều gì xảy ra nếu một bên không phải JSON hợp lệ?
Cả hai đầu vào đều phải phân tích thành công. Nếu một bên sai cú pháp, bạn sẽ thấy lỗi phân tích thay vì kết quả so sánh.
Hiển thị ra sao khi hai tài liệu giống nhau?
Công cụ nói rõ rằng không có khác biệt về cấu trúc, thay vì để lại một kết quả trống dễ bị hiểu nhầm là lỗi.
Dữ liệu của tôi có được tải lên đâu không?
Không. Việc phân tích và so sánh chạy cục bộ trong trình duyệt của bạn bằng thư viện microdiff, nên những gì bạn dán không được gửi tới wetool.site hay bất kỳ máy chủ nào khác.

So sánh JSON theo cấu trúc so với so sánh văn bản thuần

So sánh văn bản đối chiếu từng dòng ký tự, nên việc đổi thứ tự khóa, chuyển từ hai khoảng trắng sang bốn, hay khác ký tự xuống dòng đều hiện ra như khác biệt dù dữ liệu vẫn y nguyên, và các chỉnh sửa thật bị chôn vùi trong đống nhiễu đó. So sánh JSON phân tích cả hai tài liệu trước rồi chỉ báo những khác biệt về ngữ nghĩa, nên thứ tự khóa và cách định dạng đều được bỏ qua. Hãy dùng so sánh văn bản khi từng byte đều quan trọng, và dùng trang này khi chỉ dữ liệu mới quan trọng.

Đọc kết quả mà không bị dẫn dắt sai

So sánh theo cấu trúc trả lời một câu hỏi hẹp một cách chính xác, nên biết rõ bảng kết quả nói gì và không nói gì sẽ rất hữu ích.

  • Một danh sách thay đổi dài tập trung trong cùng một mảng thường chỉ báo hiệu một lần chèn hoặc một lần sắp xếp lại, chứ không phải nhiều chỉnh sửa độc lập.
  • Kiểu dữ liệu có ý nghĩa: chuỗi 1 và số 1 là hai giá trị khác nhau và sẽ được báo là một thay đổi.