Thêm game tại WuGames.ioTài trợKhám phá kho game trình duyệt miễn phí — chơi ngay, không tải, không đăng ký.Chơi ngay

So Sánh JSON

So sánh hai JSON object dòng theo dòng. Tô sáng key đã thêm, xóa, sửa với điều hướng đường dẫn đầy đủ. Hỗ trợ array, object lồng nhau, đổi kiểu dữ liệu.

So Sánh JSON - Tìm Khác Biệt Giữa Các JSON

So sánh JSON là nền tảng của vô số quy trình phát triển: so sánh snapshot phản hồi API, kiểm tra thay đổi cấu hình, debug đột biến trạng thái trong Redux/Zustand, xem xét drift infrastructure-as-code và xác thực migration dữ liệu. Khác với diff văn bản thông thường, so sánh nhận biết JSON hiểu cấu trúc dữ liệu — nó biết rằng {a:1, b:2} và {b:2, a:1} giống hệt mặc dù thứ tự key khác nhau, rằng null và undefined hành xử khác nhau, và rằng dịch chuyển phần tử mảng không nên lan ra thành các thay đổi giả. Công cụ này thực hiện so sánh đệ quy sâu, báo cáo khác biệt với đường dẫn dot-notation đầy đủ (vd: user.preferences.theme), và hiển thị chúng trong view có mã màu (xanh=thêm, đỏ=xóa, vàng=sửa) để bạn thấy chính xác điều gì đã thay đổi.

JSON Diff Checker là gì?

JSON Diff Checker là công cụ so sánh hai JSON objects và hiển thị khác biệt giữa chúng. Nó giúp bạn:

- Xác định thay đổi giữa các phiên bản JSON
- Debug khác biệt API response
- So sánh configuration files
- Theo dõi sửa đổi dữ liệu
- Xác minh cập nhật JSON

Công cụ highlight các properties đã thêm, xóa và giá trị đã sửa đổi, giúp dễ dàng thấy những gì đã thay đổi.

Làm thế nào để sử dụng công cụ này?

Sử dụng JSON Diff Checker rất đơn giản:

1. Paste JSON object đầu tiên vào 'JSON 1 (Gốc)'
2. Paste JSON object thứ hai vào 'JSON 2 (Đã Sửa)'
3. Nhấp 'So Sánh' để xem khác biệt
4. Xem lại các khác biệt được highlight

Công cụ sẽ hiển thị:
- Properties đã thêm (màu xanh lá)
- Properties đã xóa (màu đỏ)
- Giá trị đã sửa đổi với so sánh trước/sau
- Khác biệt trong nested objects

Những loại khác biệt nào được phát hiện?

Công cụ phát hiện tất cả các loại khác biệt JSON:

- Properties Đã Thêm: Keys mới trong JSON 2 không tồn tại trong JSON 1
- Properties Đã Xóa: Keys trong JSON 1 bị thiếu trong JSON 2
- Giá Trị Đã Sửa: Properties tồn tại trong cả hai nhưng có giá trị khác nhau
- Thay Đổi Type: Khi giá trị thay đổi type (string sang number, object sang array)
- Thay Đổi Lồng Nhau: Khác biệt trong nested objects và arrays
- Khác Biệt Array: Elements đã thêm, xóa hoặc thay đổi trong array

Mỗi khác biệt được gắn nhãn rõ ràng và tô màu để dễ nhận biết.

Tôi có thể so sánh file JSON lớn không?

Có, công cụ này có thể xử lý các file JSON lớn hiệu quả. Tuy nhiên:

- Files rất lớn (>5MB) có thể mất nhiều thời gian hơn để so sánh
- Cấu trúc nested phức tạp đòi hỏi nhiều thời gian xử lý hơn
- Giới hạn memory của trình duyệt có thể ảnh hưởng đến files cực kỳ lớn

Mẹo để so sánh JSONs lớn:
- Format JSON trước để dễ đọc hơn
- Cân nhắc so sánh các phần cụ thể nếu có thể
- Dùng text editor cho files trên 10MB
- Đảm bảo JSON hợp lệ trước khi so sánh

Còn nested objects và arrays thì sao?

Công cụ hỗ trợ đầy đủ các cấu trúc lồng nhau:

Nested Objects:
- So sánh properties ở tất cả các levels
- Hiển thị đường dẫn đầy đủ đến properties đã thay đổi
- Xử lý cấu trúc nested sâu

Arrays:
- Phát hiện elements đã thêm và xóa
- So sánh các elements trong array
- Hiển thị vị trí index của thay đổi
- Xử lý arrays chứa objects

Diff viewer duy trì hierarchy để bạn có thể thấy chính xác vị trí trong cấu trúc mà mỗi thay đổi xảy ra.

Dữ liệu của tôi có an toàn không?

Có, dữ liệu của bạn hoàn toàn an toàn:

- Tất cả việc so sánh diễn ra trong trình duyệt của bạn
- Không có dữ liệu nào được gửi đến server
- Chúng tôi không lưu trữ hoặc ghi log bất kỳ dữ liệu JSON nào
- Hoạt động hoàn toàn offline sau khi trang load
- Không theo dõi hoặc analytics dữ liệu của bạn

Bạn có thể xác minh quyền riêng tư bằng cách kiểm tra tab network của trình duyệt - không có requests nào được thực hiện khi so sánh JSONs.

So Sánh JSON — So sánh hai JSON object dòng theo dòng. Tô sáng key đã thêm, xóa, sửa với điều hướng đường dẫn đầy đủ. Hỗ trợ array, obj
So Sánh JSON

Tại sao hai JSON trông giống hệt nhau lại bị đánh dấu khác biệt?

Sáu nguyên nhân phổ biến: (1) Khoảng trắng bên trong giá trị chuỗi quan trọng — 'hello' và 'hello ' khác nhau. (2) Độ chính xác số: 0.1 + 0.2 trong JavaScript tạo ra 0.30000000000000004, không bằng 0.3 nếu một bên được parse từ tổng như vậy. (3) Các số 0 ở cuối sau dấu thập phân bị loại bỏ trong quá trình parse, nên '1.0' và '1' so sánh bằng sau parse nhưng khác như chuỗi. (4) Boolean so với chuỗi: 'true' và true khác kiểu. (5) null so với key thiếu — {a: null} có key, {} không. (6) Ký tự Unicode ẩn như zero-width space (U+200B) hoặc non-breaking space (U+00A0) trông giống nhau trong trình soạn thảo nhưng khác về byte. Để debug, copy mỗi chuỗi nghi ngờ vào công cụ tiết lộ ký tự ẩn.

JSON Patch (RFC 6902) khác diff trực quan như thế nào?

JSON Patch là định dạng chuẩn (IETF RFC 6902, 2013) thể hiện khác biệt dưới dạng danh sách thao tác có thứ tự: {op:'add', path:'/users/2', value:{...}}, {op:'replace', path:'/title', value:'Mới'}, {op:'remove', path:'/draft'}. Áp dụng patch đó tuần tự vào JSON gốc sẽ tạo ra phiên bản đã sửa đổi — làm patch có thể chuyển đổi, máy đọc được và áp dụng được trên server. Diff trực quan (như công cụ này) được thiết kế cho con người đọc; JSON Patch được thiết kế cho hệ thống áp dụng. Nhiều API (Kubernetes, GitHub, JSON:API) chấp nhận yêu cầu PATCH ở định dạng JSON Patch. Cho diffing hai chiều trong cơ sở dữ liệu, JSON Merge Patch (RFC 7396) đơn giản hơn nhưng mất mát hơn — nó không thể biểu diễn việc chèn phần tử mảng, chỉ có thay thế toàn bộ mảng.

Công cụ này có xử lý so sánh mảng thông minh không?

Mảng vốn có thứ tự, nên vị trí mặc định quan trọng — [1,2,3] khác [3,2,1] mặc dù chứa cùng phần tử. Công cụ báo cáo khác biệt ở mỗi chỉ số: 'index 0 thay đổi từ 1 sang 3'. Cho các mảng mà thứ tự không quan trọng (tập hợp, danh sách các mục độc lập), không có cách phổ quát nào để biết bạn muốn so sánh tập hợp hay so sánh có thứ tự — bạn phải sắp xếp cả hai mảng trước khi diff, hoặc dùng comparator tùy chỉnh. Cho mảng object có trường id ổn định (vd: hàng cơ sở dữ liệu), cách tiếp cận chính xác nhất là sắp xếp theo id rồi diff, ngăn việc chèn đơn ở giữa lan thành mọi index tiếp theo bị đánh dấu 'thay đổi'. Thuật toán diff Myers dùng bởi git tối ưu cho trường hợp này nhưng hiếm khi được triển khai trong công cụ JSON do chi phí.

JSON lớn nhất tôi có thể so sánh ở đây là bao nhiêu?

Bộ nhớ trình duyệt là giới hạn thực tế, không phải kích thước file. Trình duyệt desktop hiện đại (Chrome, Firefox) thoải mái xử lý hai JSON 50-100 MB trong bộ nhớ; trình duyệt mobile giới hạn gần 20-50 MB. Phần chậm nhất không phải tải mà là đi sâu đệ quy, vốn O(N) theo tổng số node. Một JSON 100 MB với 10 triệu key lồng nhau có thể mất 5-15 giây để diff. Cho file lớn hơn, dùng jq với tùy chọn --arg (jq -n --argjson a "$(cat a.json)" --argjson b "$(cat b.json)" '$a == $b') hoặc công cụ streaming-diff chuyên biệt như json-diff-cli hoặc graphtage. Cho so sánh lập trình trong code sản xuất, hàm lodash _.isEqualWith với comparator tùy chỉnh là chuẩn JavaScript. Tránh dán log quy mô GB vào bất kỳ công cụ dựa trên trình duyệt nào.

Tôi có thể xuất kết quả diff ra báo cáo không?

Hiện tại bạn có thể copy diff hiển thị vào clipboard để chia sẻ trong bình luận code review, luồng Slack hoặc commit message. Cho xuất có cấu trúc hơn, dán cả hai JSON vào công cụ CLI như jd (json-diff) xuất patch kiểu Unix-diff, hoặc dùng Node.js với thư viện deep-diff hoặc microdiff để trích xuất diff có lập trình dưới dạng mảng các object thay đổi (vd: {kind:'edit', path:['user','email'], lhs:'cũ@x', rhs:'mới@x'}). Cho báo cáo trực quan trong pipeline QA, json-diff-kit kết xuất đầu ra HTML cạnh nhau phù hợp để nhúng vào báo cáo lỗi test. Hầu hết các đội chuyển diff qua CI/CD dưới dạng tài liệu JSON Patch — vừa có thể chuyển đổi giữa các ngôn ngữ vừa áp dụng được như biến đổi lập trình.

Tính Năng Chính

  • So sánh hai JSON objects
  • Phát hiện properties đã thêm
  • Phát hiện properties đã xóa
  • Phát hiện giá trị đã sửa đổi
  • Highlight khác biệt với màu sắc
  • Hiển thị giá trị trước/sau
  • Hỗ trợ nested objects và arrays
  • Xử lý file JSON lớn
  • Validate cú pháp JSON
  • Đổi chỗ vị trí JSON
  • Copy khác biệt vào clipboard
  • Hỗ trợ chế độ tối
  • Xử lý 100% phía client - dữ liệu không rời khỏi trình duyệt
  • Hoạt động offline sau khi load ban đầu
  • Thiết kế responsive thân thiện mobile