Yapısal JSON karşılaştırma

İki JSON yapısını karşılaştırın; sayıların yazılışını yuvarlamadan koruyarak açık yollardaki eklemeleri, kaldırmaları ve değişiklikleri inceleyin.

Bu sayfa, mevcut kapsam içinde bu dilde kullanılabilen araçları gösterir. Bu, sitedeki her aracın her dile çevrildiği anlamına gelmez.

İşleme yereldir; girdiler yüklenmez veya otomatik kaydedilmez. Her girdi UTF-8 olarak 256 KiB, toplam 512 KiB ile sınırlıdır; derinlik 32, girdi başına 30.000 değer, 2000 fark ve 1 MiB rapor. Karşılaştırma 5 saniye sonra durdurulur.

Nesne anahtarlarının sırası dikkate alınmaz. Diziler, taşınan öğeler algılanmadan indislerine göre karşılaştırılır. Sayılar yazılışlarına göre karşılaştırılır: 1, 1.0 ve 1e0 farklıdır; büyük sayılar yuvarlanmaz. JSON dizeleri karşılaştırma için Unicode normalleştirmesi yapılmadan çözümlenir. Bir dalın türünü değiştirmek, dal eklemek veya kaldırmak, dalın tamamını içeren tek bir satır oluşturur.

Karşılaştırma girdileri

Nasıl kullanılır?

Önceki ve sonraki JSON metinlerini yapıştırıp karşılaştırın. Her değişikliğin türünü, yolunu ve önceki/sonraki JSON metnini inceleyin; gerektiğinde önizleme sayfaları arasında geçiş yapın. Raporun tamamını kendi seçiminizle kopyalayın veya json-diff.json adıyla indirin. Bir girdiyi düzenlemek önceki sonucu geçersiz kılar; rapor girdilerin yerine geçmez.

Bir örnek deneyin

Önce: {"n":1,"a":[1,2]}; sonra: {"a":[2,1],"n":1.0}. Üç değişiklik vardır: /n yolunda 1 metninden 1.0 metnine, /a/0 yolunda 1’den 2’ye ve /a/1 yolunda 2’den 1’e. Yalnızca iki nesne anahtarının sırasını değiştirmek fark oluşturmaz. a/b~c anahtarı /a~1b~0c yolunda görünür.

Destek ve sınırlar

Nesne anahtarlarının sırası dikkate alınmaz; diziler ise indislerine göre karşılaştırılır. Öğe taşımaları veya küme eşleşmeleri çıkarılmaz. Sayılar özgün yazılışlarına göre karşılaştırılır: 1, 1.0 ve 1e0 farklıdır ve asla Number türüne dönüştürülmez. JSON dizeleri karşılaştırma için Unicode normalleştirmesi yapılmadan çözümlenir. Bir dalı eklemek, kaldırmak veya türünü değiştirmek dalın tamamını içeren tek bir satır oluşturur. Boş yol kökü belirtir; JSON Pointer, ~ karakterini ~0, / karakterini ~1 olarak kaçırır. Rapordaki before ve after alanları yuvarlanmış sayısal değerler değil, kompakt JSON içeren dizelerdir. İlgili taraf yoksa alan atlanır; JSON null değeri ise "null" dizesiyle gösterilir. Rapor farkları açıklar; değişiklik uygulamak için bir JSON Patch değildir. İşleme, JSON içeriğini çalıştırmadan, yüklemeden, otomatik kaydetmeden veya kopyalamadan tarayıcıda kalır.

Sık sorulan sorular

Eşit sonuç, metinlerin bayt bayt aynı olduğu anlamına mı gelir?

Hayır. Dizelerin dışındaki boşluklar, nesne anahtarlarının sırası ve karakter kaçışlarının yazılışı farklı olsa da değerler bu kurallara göre eşit kalabilir. Bu durumda changes listesi boştur ve rapor yine kopyalanabilir veya indirilebilir. Buna karşılık bir sayının yazılışının ya da dizi öğelerinin sırasının değişmesi, anlam yakın görünse bile fark sayılır.

İlgili araçlar