JSON Diff: JSON Nesnelerini Karşılaştırın
Neyin değiştiğini tam olarak görmek için iki JSON belgesi yapıştırın. Her fark $.users[2].email gibi bir yolla listelenir; biçimlendirme veya anahtar sırası asla yanlış alarm üretmez.
Tarayıcınızda çalışırKayıt gerekmezHiçbir şey yüklenmez
Değişen yollar
| Değişiklik | Yol | Eski değer | Yeni değer |
|---|
JSON Diff nasıl kullanılır?
- Orijinal JSON'u sola, değiştirilmiş JSON'u sağa yapıştırın ya da iki dosya açın.
- Sözdizimi hataları her kutunun altında satır ve sütunla gösterilir, böylece hızlıca düzeltebilirsiniz.
- Değişen yollar tablosunu okuyun: her satır bir değerin eklendiğini, silindiğini veya değiştiğini eski ve yeni değerleriyle birlikte gösterir.
- Listeler küme niteliğindeyse (örneğin etiketler veya izinler) Dizi sırasını yok say'ı işaretleyin.
- Değişiklikleri bağlamı içinde görmek için yan yana görünüme kaydırın ya da değişiklik listesini JSON olarak kopyalayın.
Yapısal JSON diff neden metin diff'inden üstündür?
Düz bir metin diff'i karakterleri ve satırları karşılaştırır; bu yüzden aynı veriyi içeren iki JSON dosyası, biri küçültülmüş, farklı girintilenmiş veya anahtarları başka sırada olduğunda tamamen farklı görünebilir. Bu araç önce iki belgeyi de ayrıştırır ve veriyi karşılaştırır: nesneler sıradan bağımsız olarak anahtar anahtar karşılaştırılır; sayılar, dizeler, boolean'lar ve null değerine göre karşılaştırılır. Yalnızca gerçek değişiklikler raporlanır.
Değişiklikler nasıl raporlanır?
Her fark JSONPath tarzında bir konum (örneğin $.owner.email veya $.items[3].price) ve şu üç türden birini alır:
- eklendi: anahtar veya dizi öğesi yalnızca değiştirilmiş JSON'da var.
- kaldırıldı: yalnızca orijinal JSON'da var.
- değişti: ikisinde de var ama değer farklı; bir dizenin sayıya dönüşmesi gibi tür değişiklikleri de dahil.
Diziler en uzun ortak alt dizi (LCS) algoritmasıyla hizalanır; böylece bir listenin başına tek bir öğe eklemek, sonraki tüm öğeleri değişmiş olarak işaretlemek yerine tek bir ekleme olarak raporlanır.
Dizi sırasını yok saymak
Birçok API, sırasının bir anlamı olmayan listeler döndürür; roller, etiketler veya ID'ler gibi. Dizi sırasını yok say açıkken diziler koleksiyon olarak karşılaştırılır: bir öğe ancak diğer tarafta eşit bir karşılığı yoksa eklenmiş veya kaldırılmış sayılır. Yan yana görünüm de dizi öğelerini sıralar, böylece eşit listeler hizalanır.
Tipik kullanımlar
Staging ile production arasındaki API yanıtlarını karşılaştırın, bir migration'ın yapılandırma dosyasında neyi değiştirdiğini kontrol edin, iki package.json veya tsconfig dosyası arasındaki farkları inceleyin ve snapshot testlerinde hata ayıklayın.
Sıkça sorulan sorular
JSON karşılaştırırken anahtar sırası önemli mi?
{"a":1,"b":2} ve {"b":2,"a":1} eşit olarak raporlanır. Diziler sıralı olduğu için dizi sırası varsayılan olarak önemlidir, ancak Dizi sırasını yok say ile bunu kapatabilirsiniz.JSON'um bir sunucuya yükleniyor mu?
$.users[2].email gibi yollar ne anlama geliyor?
$ belgenin köküdür, .users bir anahtardır ve [2] bir dizinin üçüncü öğesidir (indisler 0'dan başlar). Boşluk veya özel karakter içeren anahtarlar $["first name"] gibi köşeli parantez içinde yazılır.1, 1.0'a eşit mi?
1 ve "1" gibi bir sayı ile bir dize ise farklıdır ve değişti olarak raporlanır.