Diff JSON

Bandingkan dua dokumen JSON dan dapatkan pohon putusan per jalur: equal, changed, added atau removed, plus hitungan, laporan teks, dan unduhan.

Kedua dokumen dibandingkan secara lokal di browser Anda. Tidak ada yang meninggalkan perangkat.

Hasil diff
—

Tempel atau muat dua dokumen JSON, lalu Bandingkan (mengetik juga menyegarkan setelah jeda singkat).

Cara kerja

Kedua panel diurai dengan JSON.parse — kegagalan di salah satu sisi dilaporkan di panel itu dan menghentikan perbandingan. Pengjelajah lalu menelusuri kedua pohon secara paralel: objek dicocokkan kunci demi kunci, sehingga urutan literal kunci di file tidak pernah menghasilkan diff palsu; dua skalar (atau tipe yang tidak cocok) di posisi yang sama menghasilkan satu putusan, dan setiap jalur ditampilkan dengan notasi titik-siku seperti users[2].role.

Putusan per jalur
Setiap daun mendapat salah satu dari empat status. sama — kedua sisi memegang nilai yang identik. berubah — ada nilai di jalur yang sama di kedua sisi tetapi berbeda, ditampilkan sebagai lama → baru. tambah — kunci atau indeks hanya ada di kanan. hapus — hanya ada di kiri. Subpohon yang ditambah atau dihapus dicetak sebagai JSON terserialisasi, dipotong hingga 80 karakter.
Array disejajarkan per indeks
Array dibandingkan secara posisional: elemen 0 lawan elemen 0, dst. Itu bawaan yang jujur untuk data terurut, tetapi modelnya beda dari diff seperti himpunan, yang mencocokkan elemen berdasarkan isi dan melaporkan satu sisipan di tempat penjajaran indeks melaporkan rantai perubahan. Jika array Anda koleksi tak berurutan, urutkan dulu di file Anda sendiri agar hasilnya lebih bersih.
Persentase sama
Ringkasan menghitung setiap putusan dan melaporkan porsi yang sama: jalur sama dibagi total jalur, dibulatkan. Dua dokumen identik karena itu terbaca 100% sama, dan statistik dihitung dari putusan daun, jadi kontainer yang hanya selamat dari suntingan anaknya tidak menambah bobot sendiri.

Pertanyaan yang sering diajukan

Seberapa besar file JSON yang bisa dibandingkan?

Semuanya berjalan di memori tab Anda, jadi batas praktisnya adalah perangkat Anda, bukan alatnya. Dokumen hingga sekitar 5 MB berjalan mulus di sebagian besar mesin; file yang jauh lebih besar membuat penelusuran rekursif dan pohon hasilnya menjadi lambat. Jika perbandingan raksasa tersendat, potong kedua sisi ke bagian yang benar-benar Anda butuhkan sebelum menempelkan.

Bisakah diff ditampilkan terurut berdasarkan path?

Path muncul dalam urutan dokumen — kunci objek mengikuti urutan di sisi kiri dulu (kunci yang hanya ada di kanan menyusul), lalu indeks array menaik. Tidak ada sakelar urut alfabetis, karena mempertahankan urutan baca alami memudahkan mencocokkan hasil dengan file Anda sendiri. Anda bisa menyalin laporan teks dan mengurutkannya di luar jika lebih suka.

Bisakah saya membandingkan dua array langsung?

Bisa — nilai tingkat atas boleh berupa array di kedua sisi, dan dibedakan per indeks seperti array lain. Ingat saja bahwa per indeks bersifat posisional: jika Anda menyisipkan satu elemen di depan array berisi 100 item, setiap indeks setelahnya bergeser dan alat ini dengan jujur melaporkan rentetan panjang entri berubah, bukan satu sisipan saja.

Mengapa menukar urutan kunci tetap terbaca equal?

Karena objek JSON adalah peta kunci/nilai, bukan catatan terurut, dan diff semantik tidak boleh peduli pada urutan serialisasi. Penelusuran mencocokkan kunci berdasarkan nama, jadi memindahkan sebuah field antarbaris di file tidak menghasilkan baris diff sama sekali. Array sebaliknya memang terurut, jadi urutan elemennya berpengaruh.

Apakah ada yang diunggah ke server?

Tidak. Kedua dokumen diurai dan ditelusuri secara lokal dengan JavaScript murni di browser Anda — bahkan saat dimuat dari disk, file dibaca dengan FileReader dan tidak pernah meninggalkan perangkat. Tidak ada permintaan jaringan yang terkait dengan perbandingan ini.