İçeriğe geç

JSON fark karşılaştırıcı

İki JSON yapıştırın. Hangi alanların eklendiğini, silindiğini ve değiştiğini yol bazında görün; dizileri sıraya, bir anahtar alana ya da sırasız küme olarak karşılaştırın. Bozuk JSON'da hatanın satır ve sütununu gösterir.

Ücretsiz araç · Entegrasyon

Her kutuya geçerli bir JSON belgesi yapıştırın (nesne, dizi ya da tek değer). Anahtar sırası önemsizdir.

Karşılaştırma tarayıcınızda yapılır; yapıştırdığınız JSON hiçbir yere gönderilmez.

Dizi karşılaştırma modu
Karşılaştırma kuralları
  • Yollar $ kökünden başlar: $.musteri.ad, $.kalemler[0].adet; boşluk ya da nokta içeren anahtarlar $["a b"] biçiminde yazılır. Anahtar alana göre eşlemede dizi öğesi $.kalemler[id=A-1] diye adlanır.
  • Nesnelerde anahtar sırası yok sayılır. Sayılar değer olarak karşılaştırılır (1 ile 1.0 aynıdır); metinler birebir.
  • Tür değişimi ("77" → 77, null → nesne) ayrı sayılır ve altına inilmez. Eklenen ya da silinen nesne/dizi tek fark olarak yazılır.
  • Sırasız küme modunda eşleşen öğeler fark üretmez; eşleşmeyenler eski dizideki konumuyla "silindi", yenideki konumuyla "eklendi" olur.
  • JSON katı okunur (RFC 8259): yorum, sondaki virgül, tek tırnak ve tırnaksız anahtar hatadır. Yinelenen anahtarda son değer geçerlidir ve uyarı verilir.

Karşılaştırma yapısal ve değer eşitliğine dayanır; alanın anlamını, birimini ya da iş kuralını bilmez. Bir fark her zaman hata değildir (örneğin zaman damgası ya da üretilmiş kimlik). Hassas veriyi paylaştığınız ortamlarda raporu kopyalarken dikkatli olun.

Sistemleriniz arasında dönen mesajların sözleşmesini, sürümlemeyi ve sapma denetimini birlikte tasarlayalım.

Görüşme talep edin

01

Nasıl kullanılır

  1. A

    Eski JSON'u A kutusuna, yeni JSON'u B kutusuna yapıştırın (ya da örnek yükleyin).

  2. B

    Diziler için modu seçin: sıraya göre, anahtar alana göre (ör. id) ya da sırasız küme.

  3. C

    Özet sayılarına ve yol bazlı fark listesine bakın; raporu kopyalayın. JSON bozuksa hata satır ve sütunla gösterilir.

02

Metin farkı değil, yapı farkı

Satır satır metin karşılaştırması, anahtar sırası ya da boşluk değiştiğinde anlamsız farklar üretir. Bu araç iki belgeyi ayrıştırıp yapı olarak karşılaştırır: anahtar sırası ve biçimlendirme fark değildir, alan yolu ve değer farkıdır. Sonuç, "hangi alan eklendi, silindi ya da değişti" sorusuna doğrudan yanıt verir.

Tür değişimi ayrı gösterilir, çünkü entegrasyonlarda en sinsi hatalardan biridir: "77" (metin) ile 77 (sayı) birçok sistemde farklı davranır, ama gözle çoğu zaman aynı görünür.

03

Dizileri karşılaştırmak

Diziler JSON'da en zor kısımdır, çünkü iki dizinin "aynı öğe" tanımı gerekir. Sıraya göre modda i. öğe i. öğeyle eşleşir: sıra değişince her öğe değişmiş görünür. Anahtar alana göre modda nesne öğeleri bir alanın değerine (ör. id, sku) göre eşlenir; böylece yalnızca gerçekten eklenen, silinen ya da değişen kalemler görünür.

Sırasız küme modu, sırası anlamsız dizileri (etiket listesi gibi) derin eşitliğe göre karşılaştırır. Bir öğe değiştiyse bu modda "biri silindi, biri eklendi" olarak görünür, çünkü öğelerin eşleşmesini sağlayan bir kimlik yoktur. Sırası ve kimliği önemli kalemler için anahtar alan modunu tercih edin.

04

Entegrasyonlarda ne işe yarar?

Bir API'nin yeni sürümünün yanıtını eskisiyle karşılaştırmak, sözleşmeden sapmayı yakalamak, iki ortamdaki (test ve canlı) yapılandırmayı ya da aynı kaydın iki sistemdeki halini kıyaslamak en yaygın kullanımlardır. Rapor, sorun kaydına ya da değişiklik talebine yapıştırılabilir.

Dinamik alanlar (zaman damgası, üretilmiş kimlik, sıra numarası) her karşılaştırmada fark çıkarır; bunları sonuçtan gözle ayıklamak gerekir. Büyük, sürekli çalışan karşılaştırmalar için bu araç yerine otomatik sözleşme testi önerilir.

Sık sorulanlar

Anahtar sırası farklıysa fark sayılır mı?
Hayır. Nesnelerde anahtar sırası JSON'da anlamsızdır ve yok sayılır; yalnızca alan yolları ve değerleri karşılaştırılır. Dizilerde ise sıra anlamlıdır (sırasız küme modu hariç).
Diziler için hangi modu seçmeliyim?
Sırası anlamlı diziler için (zaman serisi, adımlar) sıraya göre. Kimliği olan kayıt listeleri için (kalemler, kullanıcılar) anahtar alana göre ve alan adını girin. Etiket gibi sırası anlamsız listeler için sırasız küme.
Anahtar alan modunda neden "sıraya göre karşılaştırıldı" uyarısı çıkıyor?
Anahtar alan her öğede yoksa, bir nesne olmayan öğe varsa ya da aynı anahtar değeri tekrar ediyorsa eşleme güvenilir olmaz; araç o dizide sıraya göre karşılaştırır ve hangi dizilerde olduğunu söyler. Sayı ve metin gibi nesne olmayan listeler için sırasız küme modunu deneyin.
1 ile 1.0 ya da 1 ile "1" aynı mı?
1 ile 1.0 aynı sayıdır, fark yoktur. 1 (sayı) ile "1" (metin) farklı türlerdir ve "tür değişti" olarak gösterilir.
Çok büyük JSON dosyalarını karşılaştırabilir miyim?
Her taraf en çok 5 milyon karakter olabilir; tarayıcıda çalıştığı için çok büyük dosyalarda sayfa yavaşlayabilir. En çok ilk 5.000 fark listelenir, özet sayıları ise tamdır.
Yapıştırdığım JSON bir yere gönderiliyor mu?
Hayır. Ayrıştırma ve karşılaştırma tamamen tarayıcınızda çalışır; hiçbir ağ isteği yapılmaz.

Mesaj sözleşmelerinizi güvenceye alın

Sistemleriniz arasında dönen mesajların sözleşmesini, sürümlemeyi ve sapma denetimini birlikte tasarlayalım.