So sánh cấu trúc JSON

So sánh hai cấu trúc JSON và kiểm tra phần thêm, xóa hoặc thay đổi tại các đường dẫn rõ ràng, giữ nguyên cách viết của số mà không làm tròn.

Trang này hiển thị các công cụ có sẵn bằng ngôn ngữ này trong phạm vi hiện tại. Điều đó không có nghĩa mọi công cụ trên trang web đều đã được dịch sang mọi ngôn ngữ.

Dữ liệu được xử lý cục bộ, không tải lên hay tự động lưu. Mỗi dữ liệu nhập giới hạn ở 256 KiB UTF-8, tổng cộng 512 KiB; độ sâu 32, 30.000 giá trị cho mỗi dữ liệu nhập, 2000 khác biệt và báo cáo 1 MiB. Quá trình so sánh dừng sau 5 giây.

Thứ tự khóa trong đối tượng được bỏ qua. Mảng được so sánh theo chỉ số, không phát hiện việc di chuyển phần tử. Các số được so sánh theo cách viết: 1, 1.0 và 1e0 khác nhau, không làm tròn số lớn. Chuỗi JSON được giải mã để so sánh mà không chuẩn hóa Unicode. Thay đổi kiểu của một nhánh, thêm hoặc xóa nhánh đó tạo ra một dòng chứa toàn bộ nhánh.

Dữ liệu nhập để so sánh

Cách sử dụng

Dán văn bản JSON trước và sau rồi so sánh. Kiểm tra loại thay đổi, đường dẫn và văn bản JSON trước/sau mỗi thay đổi; chuyển trang xem trước khi cần. Chủ động chọn sao chép toàn bộ báo cáo hoặc tải xuống dưới tên json-diff.json. Chỉnh sửa dữ liệu nhập làm mất hiệu lực của kết quả trước đó; báo cáo không thay thế dữ liệu nhập nào.

Thử ví dụ

Trước: {"n":1,"a":[1,2]}; sau: {"a":[2,1],"n":1.0}. Có ba thay đổi: /n từ văn bản 1 thành văn bản 1.0, /a/0 từ 1 thành 2 và /a/1 từ 2 thành 1. Chỉ đổi thứ tự hai khóa của đối tượng không tạo thêm thay đổi. Khóa a/b~c xuất hiện tại /a~1b~0c.

Phạm vi hỗ trợ và giới hạn

Thứ tự khóa trong đối tượng được bỏ qua, nhưng mảng được so sánh theo chỉ số; không suy ra việc di chuyển phần tử hay đối sánh tập hợp. Các số được so sánh theo cách viết gốc: 1, 1.0 và 1e0 khác nhau và không bao giờ được chuyển thành Number. Chuỗi JSON được giải mã để so sánh mà không chuẩn hóa Unicode. Thêm, xóa hoặc thay đổi kiểu của một nhánh tạo ra một dòng chứa toàn bộ nhánh. Đường dẫn rỗng chỉ gốc; JSON Pointer escape ~ thành ~0 và / thành ~1. Các trường before và after trong báo cáo là chuỗi chứa JSON gọn, không phải các giá trị số đã làm tròn. Một trường được bỏ đi khi phía đó không có, còn JSON null được biểu diễn bằng chuỗi "null". Báo cáo mô tả khác biệt; đây không phải JSON Patch để áp dụng thay đổi. Việc xử lý diễn ra trong trình duyệt, không thực thi nội dung JSON, tải lên, tự động lưu hay sao chép nội dung đó.

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

Kết quả bằng nhau có nghĩa là các văn bản giống hệt nhau từng byte không?

Không. Khoảng trắng ngoài chuỗi, thứ tự khóa của đối tượng và cách viết escape của ký tự có thể khác nhau trong khi các giá trị vẫn bằng nhau theo các quy tắc này. Danh sách changes khi đó rỗng và báo cáo vẫn có thể được sao chép hoặc tải xuống. Ngược lại, cách viết số khác nhau hoặc thứ tự phần tử mảng khác nhau được tính là khác biệt dù ý nghĩa có vẻ tương tự.

Công cụ liên quan