JSON Diff: Banding Objek JSON

Tampal dua dokumen JSON untuk melihat dengan tepat apa yang berubah. Setiap perbezaan disenaraikan mengikut laluan, seperti $.users[2].email, dan format atau susunan kunci tidak pernah menyebabkan amaran palsu.

Berjalan dalam pelayar andaTanpa pendaftaranTiada apa dimuat naik

Susunan kunci sentiasa diabaikan.

Cara menggunakan JSON Diff

  1. Tampal JSON asal di sebelah kiri dan JSON yang diubah suai di sebelah kanan, atau buka dua fail.
  2. Ralat sintaks dipaparkan di bawah setiap kotak dengan baris dan lajur, supaya anda boleh membetulkannya dengan cepat.
  3. Baca jadual Laluan yang berubah: setiap baris menunjukkan sama ada nilai ditambah, dibuang atau diubah, dengan nilai lama dan baharu.
  4. Tandakan Abaikan susunan array apabila senarai ialah set, contohnya tag atau kebenaran.
  5. Tatal ke paparan sebelah-menyebelah untuk melihat perubahan dalam konteks, atau salin senarai perubahan sebagai JSON.

Mengapa diff JSON berstruktur lebih baik daripada diff teks

Diff teks biasa membandingkan aksara dan baris, jadi dua fail JSON yang memegang data yang sama boleh kelihatan sangat berbeza jika satu di-minify, diinden secara berbeza atau mempunyai kunci dalam susunan lain. Alat ini menghurai kedua-dua dokumen terlebih dahulu dan membandingkan data: objek dibandingkan kunci demi kunci tanpa mengira susunan, dan nombor, rentetan, boolean serta null dibandingkan mengikut nilai. Hanya perubahan sebenar yang dilaporkan.

Cara perubahan dilaporkan

Setiap perbezaan mendapat lokasi gaya JSONPath, seperti $.owner.email atau $.items[3].price, dan salah satu daripada tiga jenis:

  • ditambah: kunci atau elemen array hanya wujud dalam JSON yang diubah suai.
  • dibuang: ia hanya wujud dalam JSON asal.
  • berubah: ia wujud dalam kedua-duanya tetapi nilainya berbeza, termasuk perubahan jenis seperti rentetan menjadi nombor.

Array diselaraskan dengan algoritma longest common subsequence, jadi memasukkan satu elemen di awal senarai dilaporkan sebagai satu penambahan, bukannya menandakan setiap elemen berikutnya sebagai berubah.

Mengabaikan susunan array

Banyak API memulangkan senarai yang susunannya tidak bermakna, seperti peranan, tag atau ID. Dengan Abaikan susunan array dihidupkan, array dibandingkan sebagai koleksi: elemen hanya dikira sebagai ditambah atau dibuang jika ia tiada pasangan yang sama di sebelah lain. Paparan sebelah-menyebelah kemudian mengisih elemen array supaya senarai yang sama sejajar.

Kegunaan biasa

Bandingkan respons API antara staging dan produksi, semak apa yang diubah oleh migrasi dalam fail konfigurasi, semak perbezaan antara dua fail package.json atau tsconfig, dan debug ujian snapshot.

Soalan lazim

Adakah susunan kunci penting semasa membandingkan JSON?
Tidak. Objek JSON tidak tersusun, jadi {"a":1,"b":2} dan {"b":2,"a":1} dilaporkan sebagai sama. Susunan array penting secara lalai kerana array tersusun, tetapi anda boleh mematikannya dengan Abaikan susunan array.
Adakah JSON saya dimuat naik ke pelayan?
Tidak. Kedua-dua dokumen dihurai dan dibandingkan dalam pelayar anda. Tiada apa yang dihantar melalui rangkaian, menjadikan alat ini selamat untuk respons API yang mengandungi token atau data pelanggan.
Apakah maksud laluan seperti $.users[2].email?
$ ialah akar dokumen, .users ialah kunci, dan [2] ialah elemen ketiga array (indeks bermula dari 0). Kunci dengan ruang atau aksara khas ditulis dalam kurungan, seperti $["first name"].
Adakah 1 sama dengan 1.0?
Ya. Kedua-duanya dihurai kepada nombor yang sama, jadi ia tidak dilaporkan sebagai perbezaan. Nombor dan rentetan, seperti 1 dan "1", adalah berbeza dan dilaporkan sebagai berubah.
Bolehkah saya membandingkan JSON dengan komen atau koma di hujung?
JSON standard tidak membenarkannya, jadi input sedemikian ditandakan dengan baris dan lajur yang tepat. Buang komen atau koma itu, atau bersihkan dokumen dalam JSON Formatter terlebih dahulu.

Alat berkaitan