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
Laluan yang berubah
| Perubahan | Laluan | Nilai lama | Nilai baharu |
|---|
Cara menggunakan JSON Diff
- Tampal JSON asal di sebelah kiri dan JSON yang diubah suai di sebelah kanan, atau buka dua fail.
- Ralat sintaks dipaparkan di bawah setiap kotak dengan baris dan lajur, supaya anda boleh membetulkannya dengan cepat.
- Baca jadual Laluan yang berubah: setiap baris menunjukkan sama ada nilai ditambah, dibuang atau diubah, dengan nilai lama dan baharu.
- Tandakan Abaikan susunan array apabila senarai ialah set, contohnya tag atau kebenaran.
- 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?
{"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?
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?
1 dan "1", adalah berbeza dan dilaporkan sebagai berubah.