JSON Diff: Bandingkan Objek JSON
Tempel dua dokumen JSON untuk melihat dengan tepat apa yang berubah. Setiap perbedaan dicantumkan berdasarkan path, seperti $.users[2].email, dan format atau urutan key tidak pernah memicu alarm palsu.
Berjalan di browser AndaTanpa daftarTidak ada yang diunggah
Path yang berubah
| Perubahan | Path | Nilai lama | Nilai baru |
|---|
Cara menggunakan JSON Diff
- Tempel JSON asli di kiri dan JSON yang diubah di kanan, atau buka dua file.
- Syntax error ditampilkan di bawah setiap kotak beserta baris dan kolomnya, sehingga Anda bisa cepat memperbaikinya.
- Baca tabel Path yang berubah: setiap baris menunjukkan apakah nilai ditambahkan, dihapus, atau diubah, beserta nilai lama dan barunya.
- Centang Abaikan urutan array jika daftar berupa himpunan, misalnya tag atau permission.
- Gulir ke tampilan berdampingan untuk melihat perubahan dalam konteks, atau salin daftar perubahan sebagai JSON.
Mengapa diff JSON struktural lebih baik daripada diff teks
Diff teks biasa membandingkan karakter dan baris, sehingga dua file JSON yang berisi data sama bisa terlihat sangat berbeda jika salah satunya di-minify, diindentasi berbeda, atau urutan key-nya lain. Tool ini mem-parsing kedua dokumen terlebih dahulu lalu membandingkan datanya: objek dibandingkan key demi key tanpa memedulikan urutan, sedangkan angka, string, boolean, dan null dibandingkan berdasarkan nilai. Hanya perubahan nyata yang dilaporkan.
Cara perubahan dilaporkan
Setiap perbedaan mendapat lokasi bergaya JSONPath, seperti $.owner.email atau $.items[3].price, dan salah satu dari tiga jenis:
- ditambahkan: key atau elemen array hanya ada di JSON yang diubah.
- dihapus: hanya ada di JSON asli.
- diubah: ada di keduanya tetapi nilainya berbeda, termasuk perubahan tipe seperti string yang menjadi angka.
Array disejajarkan dengan algoritma longest common subsequence, sehingga menyisipkan satu elemen di awal daftar dilaporkan sebagai satu penambahan, bukan menandai semua elemen berikutnya sebagai berubah.
Mengabaikan urutan array
Banyak API mengembalikan daftar yang urutannya tidak bermakna, seperti role, tag, atau ID. Dengan Abaikan urutan array aktif, array dibandingkan sebagai koleksi: sebuah elemen hanya dihitung ditambahkan atau dihapus jika tidak ada pasangan yang sama di sisi lain. Tampilan berdampingan kemudian mengurutkan elemen array agar daftar yang sama sejajar.
Penggunaan umum
Bandingkan respons API antara staging dan production, periksa apa yang diubah migrasi di file konfigurasi, tinjau perbedaan antara dua file package.json atau tsconfig, dan debug snapshot test.
Pertanyaan yang sering diajukan
Apakah urutan key berpengaruh saat membandingkan JSON?
{"a":1,"b":2} dan {"b":2,"a":1} dilaporkan sama. Urutan array berpengaruh secara default karena array berurutan, tetapi Anda bisa mematikannya dengan Abaikan urutan array.Apakah JSON saya diunggah ke server?
Apa arti path seperti $.users[2].email?
$ adalah root dokumen, .users adalah sebuah key, dan [2] adalah elemen ketiga dari array (indeks dimulai dari 0). Key dengan spasi atau karakter khusus ditulis dalam kurung siku, seperti $["first name"].Apakah 1 sama dengan 1.0?
1 dan "1", berbeda dan dilaporkan sebagai diubah.