araç köşesi

JSON Karşılaştırma: İki JSON Arasındaki Fark

İki JSON belgesini alan alan karşılaştırın; eklenen, silinen ve değişen her değer yoluyla listelenir

Verileriniz sizde kalır. Dönüşüm tarayıcının içinde yapılır, hiçbir şey sunucuya gitmez.

Nasıl çalışır?

Eski JSON'u sol panele, yeni JSON'u sağ panele yapıştırın; farklar alt panelde hemen listelenir. Tek bir kutuya yapıştırmak isterseniz iki belgenin arasına yalnız --- yazan bir satır koyun. Her satırın başındaki işaret ne olduğunu söyler: + alan eklendi, - alan silindi, ~ değer değişti. Örnekte ürün fiyatı 18'den 20'ye çıkmış, satıcının il bilgisi silinmiş, etiket listesine "indirim" eklenmiş ve stok sayısı tırnak içine alınmış; sonuç "~ $.fiyat: 18 → 20", "- $.satici.il", "+ $.etiketler[2]" ve tür değişimi uyarılı "~ $.stok: 42 → \"42\"" satırlarıdır. Anahtarların hangi sırada yazıldığı ve girinti farkı sayılmaz. Bir listede yalnız sıralama değiştiyse "Dizilerde sıra" ayarını "Önemsiz" yapın; o zaman aynı elemanlar farklı sırada da olsa fark çıkmaz. JSON'lardan biri bozuksa hangisinde ve kutunun kaçıncı satırında olduğu yazılır.

Bu araç json fark bulma, json compare, json diff, json diff online aramalarıyla da biliniyor.

JSON Path (yol) nedir?

JSON yolu, bir değerin belge içindeki adresidir. $ belgenin kökünü, nokta bir alt alanı, köşeli parantezdeki sayı listenin kaçıncı elemanı olduğunu gösterir: $.satici.ad satıcı nesnesinin ad alanı, $.etiketler[2] etiket listesinin üçüncü elemanıdır (sayma 0'dan başlar). Boşluk ya da tire içeren anahtarlar $["ad soyad"] biçiminde yazılır. Bu araç her farkı bu yolla verdiği için değişikliği büyük bir belgede arayıp bulmanız gerekmez.

JSON diff nedir?

JSON diff, iki JSON belgesinin veri olarak karşılaştırılması ve farkın eklendi, silindi, değişti diye listelenmesidir. Satır bazlı metin farkından ayrılır: biçim, girinti ve anahtar sırası yok sayılır, değerin türü ise dikkate alınır. Yazılımcılar API yanıtlarının sürümler arasında nasıl değiştiğini, iki ortamın yapılandırma dosyalarının neden farklı çalıştığını ya da bir veri dışa aktarımında hangi kayıtların güncellendiğini bu yolla bulur.

JSON karşılaştırma ile metin karşılaştırma arasındaki fark nedir?

Metin karşılaştırma iki dosyayı satır satır dizgi olarak karşılaştırır; bir satırın girintisi ya da anahtarların sırası değişse bile fark gösterir. JSON karşılaştırma ise önce iki belgeyi veri ağacına çevirir ve aynı yoldaki değerleri karşılaştırır; yazım biçimi sonuca girmez, 18 ile "18" gibi tür değişimleri ise yakalanır. Sözleşme, yazı ya da düz metin için metin karşılaştırma, API yanıtı ve yapılandırma dosyası için JSON karşılaştırma kullanın.

Satır karşılaştırması neden JSON'da yanıltır

Genel metin karşılaştırma araçları satırları karşılaştırır. Aynı JSON bir programdan anahtarlar alfabetik sırayla, bir başkasından eklenme sırasıyla çıkabilir; biri tek satır, öbürü girintili olabilir. Satır bazlı karşılaştırma bunları yüzlerce fark diye gösterir, oysa veri aynıdır. Bu araç iki belgeyi önce ağaca çevirir, sonra aynı yoldaki değerleri karşılaştırır; yazım biçimi sonuca girmez.

Sayı ile metin ayrımı ise tersine gözden kaçar: 42 ile "42" ekranda neredeyse aynı görünür ama JSON'u okuyan program biri için sayı, öbürü için metin bekler. Araç bu durumda satırın sonuna tür değişimini ayrıca yazar (sayı → metin).

  • {"a":1,"b":2} ile {"b":2,"a":1} → fark yok
  • [1,2] ile [2,1] → sıra önemliyse 2 değişiklik, önemsizse fark yok
  • 18 ile "18" → ~ değişti, tür: sayı → metin

Hangi ayarı ne zaman seçmeli

API yanıtındaki bir listenin sırası anlam taşıyorsa (sıralı arama sonuçları, adımlar, sayfa numarası) "Önemli" bırakın; eleman eleman karşılaştırılır. Liste bir küme gibi kullanılıyorsa (etiketler, yetkiler, e-posta listesi) "Önemsiz" seçin; aynı eleman nerede olursa olsun eşleşir, yalnız gerçekten eklenen ve silinen elemanlar kalır.

Değişiklik raporu hazırlıyorsanız "Yalnız farklar" yeterlidir. İki yapılandırma dosyasını baştan sona gözden geçirecekseniz "Tüm alanlar" seçin; aynı kalan değerler de başında boşlukla listelenir. Çok büyük tam sayılar (2^53 üstü, örneğin 19 haneli kimlikler) JavaScript'te yuvarlanabildiği için araç böyle bir sayı görürse sonuç satırında uyarır.

Sık sorulanlar

İki JSON dosyası arasındaki fark nasıl bulunur?

Birinci JSON'u sol panele, ikincisini sağ panele yapıştırın. Araç iki belgeyi ağaç olarak karşılaştırır ve her farkı yoluyla birlikte yazar: "~ $.fiyat: 18 → 20" fiyatın değiştiğini, "- $.satici.il" alanın silindiğini gösterir.

Anahtarların sırası farklıysa fark çıkar mı?

Hayır. JSON nesnesinde anahtar sırası anlam taşımaz; {"a":1,"b":2} ile {"b":2,"a":1} aynı veridir ve araç "Fark yok" der. Girinti, boşluk ve satır sonları da yok sayılır.

Listelerdeki sıra değişikliğini görmezden gelebilir miyim?

Evet. "Dizilerde sıra" ayarını "Önemsiz" yapın. O zaman ["a","b"] ile ["b","a"] aynı sayılır; yalnız bir listede olup öbüründe olmayan elemanlar + ya da - ile gösterilir.

Yapıştırdığım JSON bir yere gönderiliyor mu?

Hayır. Karşılaştırma tamamen tarayıcınızda yapılır; API anahtarı ya da müşteri verisi içeren bir JSON yapıştırsanız bile hiçbir sunucuya gitmez.