Metin ve JSON Karşılaştırma Süreçleri
İki veri kümesi veya metin belgesi arasındaki farkları bulma işlemi (diff), yazılım geliştirme, sistem yönetimi ve veri analizi süreçlerinin temel gereksinimlerinden biridir. Bir belgenin veya veri yapısının iki farklı sürümünü karşılaştırmak; yapılan eklemeleri, silinen satırları ve güncellenen değerleri tespit etmeyi sağlar. Bu işlem, özellikle yapılandırma dosyalarındaki değişiklikleri izlerken, API yanıtlarını kontrol ederken veya veri göçü (data migration) öncesi ve sonrasındaki durumu doğrulamak gerektiğinde kritik bir rol oynar.
Metin / JSON Karşılaştırma aracı, "Orijinal" ve "Değiştirilmiş" olmak üzere iki girdiyi yan yana analiz ederek aralarındaki farkları görselleştirir. Karşılaştırma sonucunda ortaya çıkan değişiklikler üç temel kategoride sınıflandırılır:
- Eklendi: Yeni sürümde eklenen içerikler.
- Kaldırıldı: Eski sürümde olup yeni sürümden silinen içerikler.
- Değiştirildi: Mevcut olan ancak içeriği güncellenen kısımlar.
Metin Karşılaştırma ve Ayrıntı Düzeyleri
Metin modunda karşılaştırma yapılırken analiz süreci iki farklı ayrıntı düzeyinde (granularity) gerçekleştirilebilir: "Satırlar" veya "Kelimeler".
- Satırlar (Line-by-line): Bu modda araç, girdileri satır satır karşılaştırır. Özellikle kod blokları, düz metin listeleri veya satır tabanlı yapılandırma dosyaları için idealdir.
- Kelimeler (Word-by-word): Bu modda ise satır içindeki kelime bazlı değişiklikler tespit edilir. Kısa metinler veya paragraflar üzerindeki hassas düzeltmeleri görmek için bu ayrıntı düzeyi tercih edilir.
Araç, kullanıcıların sistemi test edebilmesi için hazır örnek metinler sunar. Sol tarafa yüklenebilen orijinal örnek metin şu şekildedir:
BroBroGo araçları tarayıcınızda çalışır.
Hızlı, gizli ve basittirler.
Hızlı bir kontrole ihtiyacınız olduğunda bunları kullanın.
Sağ tarafa yüklenen değiştirilmiş örnek metin ise şu şekildedir:
BroBroGo araçları tarayıcınızda çalışır.
Hızlı, gizli ve odaklıdırlar.
Hızlı bir karşılaştırmaya ihtiyacınız olduğunda bunları kullanın.
Bu iki metin karşılaştırıldığında, ikinci satırdaki "basittirler" kelimesinin "odaklıdırlar" olarak değiştirildiği ve üçüncü satırdaki "kontrole" kelimesinin "karşılaştırmaya" şeklinde güncellendiği kelime veya satır bazında raporlanır.
JSON Veri Yapılarının Karşılaştırılması
JSON (JavaScript Object Notation) verilerini karşılaştırmak, düz metin karşılaştırmasından farklı kurallara tabidir. JSON modunda araç, girdileri sadece karakter dizisi olarak ele almaz; önce her iki tarafı da anlamsal olarak ayrıştırır (parse) ve biçimlendirir.
JSON karşılaştırmasında uygulanan temel kurallar şunlardır:
- Nesne Anahtarlarının Sıralaması: JSON nesnelerindeki (objects) anahtarlar adlarına göre karşılaştırılır. Bu nedenle, anahtarların sadece dizilim sırasının değişmiş olması anlamsal bir değişiklik olarak kabul edilmez ve fark olarak raporlanmaz. Bu durum, biçimlendirme değişiklikleri ile gerçek veri değişikliklerini ayırt etmeyi sağlar.
- Dizilerin Karşılaştırılması: JSON dizileri (arrays) ise nesnelerin aksine konumlarına (indeks sırasına) göre karşılaştırılır.
- Yapısal Yollar: Değişiklikler, JSON yapısı içerisindeki tam yolları (path) ile listelenir, böylece geliştiriciler değişen verinin tam konumunu doğrudan görebilir.
Araçta yer alan örnek JSON verileri, bu yapının nasıl çalıştığını anlamayı kolaylaştırır. Sol taraftaki orijinal JSON örneği:
{
"name": "BroBroGo",
"plan": "free",
"tools": ["json", "regex", "hash"],
"private": true
}
Sağ taraftaki değiştirilmiş JSON örneği:
{
"name": "BroBroGo",
"plan": "free",
"tools": ["json", "regex", "diff"],
"private": true,
"updated": 2026
}
Bu iki veri karşılaştırıldığında, tools dizisinin üçüncü elemanının "hash" değerinden "diff" değerine değiştirildiği ve nesneye updated adında yeni bir anahtar eklendiği tespit edilir.
Tarayıcı Tabanlı Çalışma ve Veri Gizliliği
Bu araçla yapılan tüm karşılaştırma işlemleri doğrudan kullanıcının web tarayıcısında gerçekleşir. Metniniz ve JSON'unuz tarayıcınızda karşılaştırılır. BroBroGo'ya hiçbir şey yüklenmez.
Verilerin hiçbir uzak sunucuya gönderilmemesi, hassas yapılandırma dosyaları, API anahtarları içermeyen sistem çıktıları veya kişisel veri barındıran JSON nesneleri üzerinde çalışırken veri güvenliği sağlar. İşlemler tamamen yerel kaynaklar kullanılarak yapıldığı için internet bağlantı hızından bağımsız olarak tarayıcının işlem gücüyle sınırlı bir hızda sonuç üretilir.
Sınırlar, Hata Mesajları ve Performans Kuralları
Büyük verilerin işlenmesi sırasında tarayıcı sekmesinin donmasını önlemek ve sayfa performansını korumak amacıyla araç belirli kurallar ve sınırlamalar uygular:
- Karakter Sınırı: Sol ve sağ girdilerin her biri tek taraflı olarak en fazla 300.000 karakter olabilir. Bu sınır aşıldığında araç "Bu girdi bu araç için çok büyük. Daha küçük bir karşılaştırma deneyin." uyarısını gösterir.
- Zaman Aşımı: Karşılaştırma işlemlerinin 2,5 saniyeden uzun sürmesi durumunda işlem otomatik olarak durdurulur. Bu durumda ekranda "Bu karşılaştırma çok uzun sürüyor. Daha küçük bir girdi veya satır modunu deneyin." mesajı belirir.
- Sonuç Sınırlandırma: Çok büyük girdilerde sayfa yanıt verebilirliğini korumak adına sonuçların bir kısmı gizlenebilir. Bu durumda kullanıcıya "Sayfanın yanıt vermeye devam etmesi için sınırlandırılmış bir sonuç gösteriliyor." uyarısı verilir.
- Geçersiz JSON Durumları: JSON modunda girdilerden birinin geçerli bir JSON formatında olmaması durumunda analiz yapılamaz. Sol taraf hatalı ise "Sol taraftaki JSON geçersiz:" uyarısı, sağ taraf hatalı ise "Sağ taraftaki JSON geçersiz:" uyarısı ve ardından ilgili sözdizimi hatası gösterilir.
- Diğer Durumlar: Karşılaştırma tamamen başarısız olursa "Bu girdiler karşılaştırılamadı." mesajı verilir. Eğer iki girdi arasında hiçbir fark yoksa "Hiçbir fark bulunamadı." ifadesi, JSON modunda anlamsal bir değer değişimi yoksa "JSON değerlerinde hiçbir değişiklik bulunamadı." ifadesi görüntülenir.
Sıkça Sorulan Sorular
Metin modu ile JSON modu arasındaki fark nedir?
Metin modu, ham içeriği satır veya kelime bazında karşılaştırır. JSON modu ise önce her iki tarafı da ayrıştırır, tutarlı bir şekilde biçimlendirir ve $.user.email gibi değişen yolları listeler.
Çok büyük girdileri işleyebilir mi?
Yavaş karşılaştırmalar 2,5 saniye sonra durdurulur. Sayfanın yanıt vermeye devam etmesi için çok büyük kazara yapıştırmalar sınırlandırılır. Tek bir taraf için karakter sınırı 300.000 karakterdir.
JSON modu nesne anahtarlarının sırasını yoksayar mı?
Yapılandırılmış değişiklik listesi nesne anahtarlarını adlarına göre karşılaştırır, bu nedenle yalnızca anahtar sırasının değişmesi anlamsal bir değişiklik olarak raporlanmaz. Diziler ise konumlarına göre karşılaştırılır.
Girdileri hızlıca temizlemek veya yerlerini değiştirmek mümkün müdür?
Evet, arayüzde bulunan butonlar yardımıyla sol ve sağ girdilerin yerleri değiştirilebilir veya her iki alan tek seferde temizlenebilir. Yer değiştirme yapıldığında "Sol ve sağ yer değiştirildi.", temizleme yapıldığında ise "Her iki taraf da temizlendi." bilgisi gösterilir.