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

Urutan key selalu diabaikan.

Cara menggunakan JSON Diff

  1. Tempel JSON asli di kiri dan JSON yang diubah di kanan, atau buka dua file.
  2. Syntax error ditampilkan di bawah setiap kotak beserta baris dan kolomnya, sehingga Anda bisa cepat memperbaikinya.
  3. Baca tabel Path yang berubah: setiap baris menunjukkan apakah nilai ditambahkan, dihapus, atau diubah, beserta nilai lama dan barunya.
  4. Centang Abaikan urutan array jika daftar berupa himpunan, misalnya tag atau permission.
  5. 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?
Tidak. Objek JSON tidak berurutan, jadi {"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?
Tidak. Kedua dokumen di-parse dan dibandingkan di browser Anda. Tidak ada yang dikirim lewat jaringan, sehingga tool ini aman untuk respons API yang berisi token atau data pelanggan.
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?
Ya. Keduanya di-parse menjadi angka yang sama, jadi tidak dilaporkan sebagai perbedaan. Angka dan string, seperti 1 dan "1", berbeda dan dilaporkan sebagai diubah.
Bisakah saya membandingkan JSON yang berisi komentar atau koma di akhir?
JSON standar tidak mengizinkannya, jadi input seperti itu ditandai dengan baris dan kolom yang tepat. Hapus komentar atau komanya, atau rapikan dokumen di JSON Formatter terlebih dahulu.

Tools terkait