AI di perangkat — profesional dan privat.

Pembanding Diff JSON

Diff JSON dengan pemasangan array, filter, dan patch

  • Semua di perangkat Anda
  • Array dipasangkan, bukan ditumpahkan
  • Ekspor patch JSON atau Markdown

Jatuhkan dua berkas JSON, atau tempel di bawah

JSON, JSONC, GeoJSON, source map, teks · Jatuhkan sepasang dan keduanya dipasangkan menurut nama

Pengaturan perbandingan
Tampilan
Tampilan
Apa yang dihitung sebagai perbedaan

Setiap opsi melonggarkan satu hal tertentu. Laporan mencatat mana yang aktif.

Toleransi angka

Seberapa dekat dua angka harus agar terhitung sama.

Pasangkan item

Sebutkan bidang unik dan item akan sejajar menurut nilainya, bukan menurut posisi.

Lewati ini

Dipisahkan koma. Jalur menerima * untuk satu langkah dan ** untuk berapa pun.

Batas

Gratis: satu pasang, hingga 10.0 MB per sisi. Pro menaikkannya sebatas kemampuan perangkat Anda dan membandingkan hingga 50 pasang sekaligus.

Tambahkan dua dokumen untuk dibandingkan

Cara membandingkan dua berkas JSON

  1. 1Tambahkan dokumen pertamaTempel JSON ke kotak kiri, atau jatuhkan berkas .json ke area unggah. Jatuhkan dua berkas sekaligus dan keduanya dipasangkan otomatis: nama seperti users.before.json dan users.after.json dikenali, dan sisi yang lebih lama ditempatkan di kiri.
  2. 2Tambahkan dokumen keduaTempel atau jatuhkan dokumen kedua ke kotak kanan. Gunakan Tukar sisi bila keduanya tertukar.
  3. 3Baca perbedaannyaPerbandingan berjalan sambil Anda mengetik. Beralihlah antara tampilan berdampingan, sebaris, dan menurut jalur; bagian yang tak berubah tetap terlipat sampai Anda membukanya, dan tombol sebelumnya serta berikutnya melompat antar perubahan.
  4. 4Atur apa yang dihitung sebagai perbedaanAbaikan urutan array, huruf besar-kecil, atau spasi; tetapkan toleransi angka; sebutkan kunci atau jalur yang dilewati; atau pasangkan item lewat bidang id agar daftar yang diurut ulang terbaca sebagai diurut ulang, bukan ditulis ulang.
  5. 5Ekspor hasilnyaSalin ringkasannya, unduh patch JSON RFC 6902 yang mengubah dokumen kiri menjadi dokumen kanan, atau unduh laporan Markdown untuk ditempel ke pull request atau tiket.

Apa yang ditawarkan alat diff JSON ini

Temukan perubahan persis antara dua objek JSON, termasuk kunci yang ditambah, dihapus, dan diubah, dengan penyaringan cepat dan diagnostik yang jelas. Tempel atau jatuhkan dua dokumen dan perbandingan berjalan di perangkat Anda sambil Anda mengetik: setiap perbedaan dilaporkan dengan jalur persisnya, array dipasangkan elemen demi elemen alih-alih ditumpahkan sebagai satu blok, dan hasilnya bisa keluar sebagai patch JSON, laporan Markdown, atau ringkasan yang bisa disalin.

  • Perbedaan berjalur persis — Setiap perubahan dialamatkan dengan JSON Pointer, jadi users/1/name berarti bidang itu pada item itu dan bukan yang lain. Kunci yang benar-benar berisi titik atau garis miring di-escape, bukan dilebur dengan jalur di sekitarnya.
  • Tiga cara membacanya — Berdampingan untuk memindai, sebaris untuk tampilan bergaya patch, atau daftar datar menurut jalur untuk langsung ke bagian yang berpindah. Bagian tak berubah tetap terlipat sampai Anda membukanya.
  • Empat jenis perubahan — Ditambah, dihapus, diubah, dan tipe berubah. Nilai yang berpindah dari "3" ke 3 ditandai terpisah, karena itulah perubahan yang paling mungkin merusak apa pun yang membaca dokumen berikutnya.
  • Ekspor yang berguna — Patch JSON RFC 6902 yang bisa diterapkan alat lain, laporan Markdown untuk pull request, atau ringkasan sederhana untuk sebuah pesan. Halaman yang digantikan sama sekali tidak punya ekspor.

Bagaimana array dipasangkan

Inilah bagian yang memisahkan diff JSON yang berguna dari yang menjengkelkan. Membandingkan dua array posisi demi posisi hanya berhasil selama tidak ada yang disisipkan atau dihapus: tambahkan satu item di depan daftar seribu dan setiap elemen sesudahnya sejajar dengan tetangga yang salah, sehingga perubahan satu item dilaporkan sebagai seribu.

Karena itu array disejajarkan sebelum dibandingkan, memakai salah satu dari empat strategi yang paling cocok. Strategi yang dipakai ditampilkan di sebelah ringkasan, karena pertanyaan pertama siapa pun terhadap diff array adalah mengapa dua item tertentu dipasangkan.

  • Menurut id — Sebutkan sebuah bidang di Pasangkan item dan elemen akan sejajar menurut nilainya. Koleksi yang kembali dari API dalam urutan berbeda lalu terbaca sebagai diurut ulang, dan hanya catatan yang benar-benar berubah yang dilaporkan. Ini hanya dipakai bila setiap elemen memuat bidang itu dan tidak ada nilai yang berulang: kunci yang tidak unik akan menghasilkan pemasangan yang meyakinkan, rapi, dan salah, jadi ditolak alih-alih ditebak.
  • Menurut suburutan bersama terpanjang — Perilaku bawaan. Awalan dan akhiran yang sama dipasangkan lebih dulu, lalu bagian tengah disejajarkan agar sesedikit mungkin item terhitung disisipkan atau dihapus. Penyisipan adalah satu penambahan; penghapusan adalah satu pengurangan; sisanya tetap sejajar.
  • Sebagai himpunan — Aktifkan Abaikan urutan array dan kedua daftar dibandingkan sebagai koleksi tanpa urutan, sehingga item yang sekadar berpindah bukan lagi perbedaan.
  • Menurut posisi — Jawaban jujur untuk dua daftar yang hampir tidak punya kesamaan, di mana pemasangan apa pun bersifat sembarang dan berpura-pura sebaliknya hanya menambah derau.

Penjelasan opsi

Perbandingan bawaan bersifat ketat: setiap nilai, setiap tipe, dan setiap posisi array harus cocok. Setiap opsi di bawah melonggarkan satu hal tertentu, dan laporan mencatat mana saja yang aktif, sehingga hasilnya selalu bisa dibaca ulang nanti.

  • Abaikan urutan array — Memperlakukan array sebagai koleksi tanpa urutan. Berguna untuk daftar tag, kumpulan izin, dan apa pun yang urutannya tidak bermakna.
  • Abaikan huruf besar-kecil — Membandingkan string tanpa memperhatikan kapitalisasi. Berguna untuk label dan nilai enumerasi yang berubah gaya tapi tidak berubah makna.
  • Abaikan spasi — Memangkas string dan meringkas deretan spasi sebelum membandingkan, agar deskripsi yang diatur ulang tidak terbaca sebagai penulisan ulang.
  • Toleransi angka — Pilih seberapa dekat dua angka harus agar terhitung sama, dari persis hingga 1. Setel ke 0,0001 dan derau pembulatan hilang sementara perubahan harga sungguhan tidak.
  • Abaikan kunci — Sebutkan kunci — updatedAt, requestId, etag — dan semuanya dilewati di mana pun muncul, pada kedalaman berapa pun. Inilah yang mengubah dua cuplikan API menjadi diff yang terbaca.
  • Abaikan jalur — Melewati lokasi tertentu alih-alih sebuah nama. Wildcard didukung: /users/*/lastSeen melewati bidang itu untuk setiap pengguna, dan /meta/** melewati semua yang ada di bawah meta.
  • Izinkan komentar dan koma penutup — Menerima JSONC, sehingga berkas konfigurasi bisa dibandingkan apa adanya. Menjatuhkan berkas .jsonc mengaktifkannya untuk Anda.
  • Bandingkan sambil mengetik — Aktif secara bawaan. Matikan pada dokumen yang sangat besar bila Anda lebih suka membandingkan sesuai permintaan; tombolnya lalu menyebut berapa banyak hasil yang sudah usang.

Jalur, dan mengapa berupa JSON Pointer

Setiap perbedaan membawa JSON Pointer RFC 6901 — /users/1/name, bukan users.1.name. Perbedaannya lebih penting daripada kelihatannya, karena jalur yang dibangun dengan menyambung kunci memakai titik menjadi ambigu begitu sebuah kunci mengandung titik.

Dokumen dengan kunci yang benar-benar bernama a.b dan dokumen dengan a bersarang berisi b menghasilkan jalur bertitik yang sama, sehingga dua lokasi yang sungguh berbeda mengklaim alamat yang sama dan tak satu pun bisa dikembalikan ke sebuah simpul. Pointer meng-escape pemisahnya alih-alih memesannya: ~ menjadi ~0 dan / menjadi ~1, sehingga setiap jalur mengarah tepat ke satu tempat. Itulah yang membuat patch yang diekspor bisa diterapkan, tombol lompat antar perubahan mungkin, dan hasilnya bisa dipakai alat lain.

  • Di layar — Jalur ditampilkan dalam bentuk yang lebih ramah — $.users[1].name — karena itulah yang paling enak dibaca. Yang diekspor adalah pointer-nya.
  • Di dalam patch — Setiap operasi dialamatkan lewat pointer-nya, dan itulah yang menjadikan berkasnya patch RFC 6902 standar, bukan sesuatu yang hanya dipahami alat ini.

Mengekspor sebuah perbandingan

Sebuah diff biasanya menjadi bukti untuk hal lain — sebuah tinjauan, tiket, atau pemeriksaan penerapan — jadi ia harus bisa meninggalkan halaman. Tiga ekspor mencakup cara hal itu terjadi, dan ketiganya tersedia di paket gratis.

  • Patch JSON (RFC 6902) — Daftar standar operasi add, remove, dan replace yang mengubah dokumen kiri menjadi dokumen kanan. Operasi array diurutkan agar indeks tetap sahih saat patch diterapkan: pertama semua yang ada di dalam sebuah elemen, lalu penghapusan dari belakang, lalu penyisipan dari depan.
  • Laporan Markdown — Tabel ringkasan, pengaturan yang dipakai, dan satu baris per perbedaan berisi jalur, jenis perubahan, dan kedua nilainya. Nilai yang mengandung garis tegak di-escape, sehingga satu baris tabel tidak pernah bisa terbelah ke kolom yang salah.
  • Ringkasan yang bisa disalin — Daftar teks biasa dengan awalan +, -, dan ~, untuk pesan obrolan atau catatan commit.
  • Satu ZIP untuk sekumpulan — Dengan Pro, setiap perbandingan dalam antrean mengekspor laporan dan patch-nya ke dalam satu arsip.

Kunci ganda, dan hal lain yang disembunyikan JSON

JSON mengizinkan sebuah objek mendeklarasikan kunci yang sama dua kali. Setiap parser yang ada menerimanya dan diam-diam menyimpan nilai terakhir, artinya dua dokumen bisa berbeda pada kunci yang tak mungkin dilihat perbandingan apa pun — perbedaannya sudah hilang sebelum perbandingan dimulai.

Kedua sisi dipindai untuk kunci berulang dan Anda diberi tahu kunci mana dan di mana. Pemindaian berjalan setelah hasilnya muncul, jadi tidak pernah menunda jawaban. Dua kasus senyap lain ditangani dengan cara sama: angka dibandingkan menurut nilainya, bukan menurut cara penulisannya, jadi 1, 1.0, dan 1e0 adalah satu nilai dan -0 sama dengan 0; dan kunci sebuah objek dibandingkan sebagai himpunan, jadi mengurut ulang kunci sebuah objek bukanlah perubahan.

  • Kunci sama dua kali — Dilaporkan sebagai peringatan yang menyebut kuncinya dan letaknya, di sisi mana pun ia muncul.
  • Angka yang ditulis berbeda — 1 dan 1.0 adalah nilai yang sama dan tidak dilaporkan sebagai perubahan.
  • Kunci dalam urutan berbeda — Objek menurut definisinya tidak berurutan, jadi objek yang diurut ulang terbandingkan sebagai identik.
  • Akar apa pun, bukan hanya objek — Array, string, angka, true, false, atau null di akar dibandingkan seperti biasa.

Apa yang bisa Anda bandingkan

Alat ini membuka persis format di bawah dan menolak selebihnya pada saat Anda memilih berkas, alih-alih membiarkannya sampai ke parser lalu gagal. Berkas yang ditolak disebut namanya, begitu pula alat yang mengonversinya.

  • JSON, GeoJSON, source map, teks biasa — .json, .geojson, .map, dan .txt terbuka langsung. Berkas dikenali dari ekstensinya, bukan dari tipe yang dilaporkan sistem Anda — yang sering kali tidak ada sama sekali.
  • JSONC — .jsonc terbuka dengan komentar dan koma penutup diterima otomatis. Opsinya juga bisa dinyalakan manual untuk berkas .json yang kebetulan memuatnya.
  • YAML dan XML — Ditolak, dengan tautan ke konverter YAML ke JSON atau XML ke JSON. Konversi dulu, lalu bandingkan.
  • CSV dan Excel — Ditolak, dengan tautan ke CSV ke JSON atau Excel ke JSON.

Kecepatan, dan apa yang terjadi pada dokumen besar

Perbandingan berjalan di luar thread utama, jadi halaman tetap merespons selama prosesnya dan Batal benar-benar membatalkan — termasuk selama fase paling lambat, bukan hanya di antara langkah. Kemajuannya nyata: yang dihitung adalah simpul yang dilewati, bukan detik yang berlalu.

Daftar hasil digambar per jendela alih-alih dibangun seluruhnya. Perbandingan yang menghasilkan ribuan perbedaan hanya menggambar baris yang tampak di layar, dan karena itulah diff yang sangat besar bergulir mulus alih-alih membekukan tab sementara puluhan ribu elemen dibuat. Bagian yang tak berubah bahkan tidak dibangun sampai Anda membukanya.

  • Sambil mengetik — Suntingan digabung menjadi satu perbandingan alih-alih satu per ketukan tombol, dan hanya satu yang berjalan pada satu waktu.
  • Batal — Berhenti dalam sepersekian detik, di titik mana pun dalam prosesnya.
  • Hitungan tetap persis — Di atas 100.000 perbedaan daftarnya berhenti bertambah tetapi totalnya tidak, dan halaman menyatakan bahwa daftarnya dipotong. Ringkasan yang diam-diam melaporkan kurang akan lebih buruk daripada tidak ada ringkasan.

Sepasang dokumen 10 MB diurai, dibandingkan, dan menghasilkan patch-nya jauh di bawah satu detik, di luar thread utama, sehingga halaman tetap responsif selama prosesnya.

Mengapa memakai diff JSON?

Berkas konfigurasi, respons API, dan data ekspor berubah antar versi, dan bagian yang menarik hampir tidak pernah terlihat pada teks mentahnya. Perbandingan struktural memberi tahu persis kunci mana yang ditambah, dihapus, atau berganti tipe tanpa membaca satu pun dari kedua dokumen, dan itulah yang membuatnya berguna dalam tinjauan, laporan bug, atau audit.

  • Tinjauan lebih cepat — Kenali perubahan struktural pada konfigurasi dan payload tanpa membaca baris demi baris, dan tempel laporan Markdown langsung ke pull request.
  • Pemeriksaan regresi — Bandingkan respons yang diharapkan dengan yang sebenarnya, abaikan bidang yang selalu berubah, dan lihat hanya yang benar-benar bergeser.
  • Migrasi dan audit — Pastikan sebuah transformasi mempertahankan setiap bidang yang seharusnya, dan hasilkan patch sebagai catatan atas apa yang diubahnya.
  • Tidak ada yang keluar dari perangkat Anda — Kredensial, catatan pelanggan, dan payload internal dibandingkan di tempatnya sekarang: tidak ada yang diunggah dan tidak ada yang disimpan.

Batas dan apa yang diubah Pro

Paket gratis dibatasi pada skala, tidak pernah pada fungsi: seluruh opsi perbandingan, ketiga tampilan, dan seluruh ekspor satu pasang tersedia gratis. Pro menaikkan langit-langitnya dan menambahkan mode sekumpulan.

  • Gratis — Satu pasang sekali jalan, hingga 10 MB per sisi. Seluruh opsi, ketiga tampilan, dan ekspor patch JSON, Markdown, serta ringkasan.
  • Pro — Dokumen sebesar yang sanggup ditangani perangkat Anda, dan hingga 50 pasang dalam antrean sekaligus — dipasangkan menurut nama, dengan semua laporan dan patch dalam satu ZIP.
  • Bila sebuah berkas terlalu besar — Penolakannya menyebut ukuran sebenarnya dan batasnya, serta menautkan ke Minifier JSON: dokumen yang diindentasi dua spasi sering kali sebagian besar berisi indentasi, dan meminifikasinya kerap sudah menjadi solusi utuhnya.

Pertanyaan umum

Bagaimana cara kerja alat diff JSON ini?

Tempel atau jatuhkan dua dokumen JSON dan perbandingan berjalan di perangkat Anda sambil Anda mengetik. Kedua sisi diurai, lalu ditelusuri bersama kunci demi kunci dan elemen demi elemen, dan setiap perbedaan dilaporkan dengan jalur persisnya: ditambahkan di kanan, dihapus dari kiri, nilai berubah, atau tipe berubah. Hitungan menunjukkan totalnya, dan Anda bisa membaca hasilnya berdampingan, sebaris, atau sebagai daftar jalur.

Apakah data saya aman?

Ya. Kedua dokumen dibaca dan dibandingkan sepenuhnya di perangkat Anda — tidak ada yang diunggah, tidak ada yang disimpan, dan tidak ada salinan yang dikirim ke mana pun. Perbandingan tetap berjalan meski jaringan diputus setelah halaman termuat, yang merupakan cara paling sederhana untuk membuktikannya sendiri.

Bagaimana array dan objek bersarang dibandingkan?

Objek bersarang dibandingkan kunci demi kunci pada kedalaman berapa pun. Array dipasangkan elemen demi elemen, bukan dibandingkan sebagai satu kesatuan, jadi mengubah satu bidang satu item dalam daftar seribu dilaporkan sebagai satu perubahan pada jalur item itu — bukan sebagai «array berubah». Menyisipkan item dilaporkan sebagai satu penambahan, bukan sebagai bergesernya semua elemen sesudahnya. Bila item Anda punya id, sebutkan di Pasangkan item dan daftar yang diurut ulang akan sejajar menurut id, bukan menurut posisi.

Apa yang terjadi jika salah satu JSON saya tidak valid?

Kedua sisi diperiksa, jadi Anda diberi tahu tentang kedua masalah sekaligus, bukan memperbaiki satu lalu menemukan yang lain. Setiap kesalahan menyebut baris dan kolom, teks di sekitarnya dengan penanda tepat di bawah titik masalah, serta tautan ke JSON Formatter dan Validator. Bila berkas gagal hanya karena berisi komentar atau koma penutup, alat ini mengatakannya dan menawarkan untuk menerimanya.

Bisakah saya mengekspor perbedaannya?

Bisa, dengan tiga cara. Salin ringkasan menaruh daftar teks biasa berisi setiap perubahan ke papan klip. Unduh patch JSON memberi Anda patch RFC 6902 — berkas standar yang bisa diterapkan alat lain untuk mengubah dokumen kiri menjadi dokumen kanan. Unduh Markdown menghasilkan laporan dengan tabel ringkasan dan satu baris per perubahan, siap ditempel ke pull request atau tiket. Dengan Pro, sekumpulan perbandingan terunduh sebagai satu ZIP.

Bisakah membandingkan berkas konfigurasi berkomentar, atau array JSON di akar?

Keduanya bisa. Aktifkan Izinkan komentar dan koma penutup untuk membandingkan tsconfig.json, .vscode/settings.json, devcontainer.json, dan apa pun yang ditulis sebagai JSONC — menjatuhkan berkas .jsonc mengaktifkan opsi itu untuk Anda. Akar dokumen Anda boleh apa saja yang diizinkan JSON: objek, array, string, angka, true, false, atau null. Respons API yang mengembalikan array telanjang dibandingkan persis seperti objek.

Berapa batas ukurannya, dan apa yang ditambahkan Pro?

Versi gratis membandingkan satu pasang dokumen hingga 10 MB per sisi, dengan seluruh opsi perbandingan dan seluruh ekspor satu pasang tersedia. Pro menaikkan ukuran hingga sebatas kemampuan perangkat Anda dan memungkinkan mengantre hingga 50 pasang sekaligus: berkas dipasangkan menurut nama, dan semua laporan serta patch terunduh sebagai satu ZIP. Tidak ada opsi maupun ekspor yang ditahan di paket gratis.

Mengapa dokumen saya punya kunci yang sama dua kali?

JSON mengizinkannya dan setiap parser menerimanya, diam-diam menyimpan nilai terakhir — artinya dua dokumen bisa berbeda pada kunci yang tak mungkin dilihat perbandingan apa pun. Alat ini memindai kedua sisi untuk kunci berulang dan memperingatkan Anda, menyebutkan kuncinya dan letaknya. Layak diperiksa setiap kali sebuah diff terlihat lebih kosong dari yang Anda duga.

4.8dari 5

dari 72 penilaian

Beri nilai alat ini

Ketuk bintang — hanya sebentar