JSON Diff Karşılaştır
Tarayıcınızda iki JSON dosyasını anında karşılaştırın. Yan yana vurgulama, RFC 6902 JSON Patch çıktısı, zaman damgaları ve kimlikler gibi gürültülü alanları yoksayma. %100 gizli, yükleme yok.
Gelişmiş Seçenekler
JSON Diff Nedir?
JSON Diff, JSON'un veri modelini dikkate alan iki JSON belgesinin yapısal karşılaştırmasıdır — anahtarlar sırasızdır, türler katıdır ve diziler sıralı ya da anahtarlı olabilir. Anahtar yeniden sıralamayı veya boşlukları fark olarak raporlayan metin diffinin aksine JSON diff, anlam açısından anlamlı sonuçlar üretir.
Kanonik makine tarafından okunabilir biçim, bir belgeyi diğerine dönüştüren sıralı bir ops dizisi (add, remove, replace, move, copy, test) olan JSON Patch (RFC 6902)'dir. Yollar JSON Pointer (RFC 6901) kullanır. Yakından ilişkili: JSON Merge Patch (RFC 7396) — daha basit ama 'anahtarı kaldır' ile 'anahtarı null yap' arasındaki farkı temsil edemez. Bu araç RFC 6902 çıktısı üretir.
JavaScript'te JSON üzerinde derin eşitlik göründüğünden zordur. JSON.stringify(a) === JSON.stringify(b) anahtar yeniden sıralamada başarısız olur; -0 ile 0 üzerinde yanıltır (ikisi de "0" olarak dizeleştirilir). Doğru bir diff, her iki ağacı anahtar kümesi birleşimini kullanarak paralel olarak gezmeli, null ile eksik arasındaki farkı 'in' operatörüyle ayırt etmeli ve sayılar için 'eşit' ne anlama gelir sorusuna yanıt vermelidir (varsayılan Object.is, tolerans için epsilon).
Bu araç tamamen tarayıcınızda çalışır. Girişler makinenizden asla çıkmaz. API yanıtları, iç şemalar ve özel yapılandırmalar için güvenlidir.
Bitişik JSON araçlarıyla mı çalışıyorsunuz? JSON Biçimlendirici ile biçimlendirin; JSON to YAML, YAML to JSON, JSON to CSV ve CSV to JSON ile dönüştürün. Yapıyı doğrulamanız mı gerekiyor (sadece diff almak değil)? JSON Schema doğrulama rehberine bakın.
// Two JSON documents that look different but are semantically equal
const a = '{"a":1,"b":2}';
const b = '{"b":2,"a":1}';
// Naive comparison — wrong
JSON.stringify(JSON.parse(a)) === JSON.stringify(JSON.parse(b));
// → false (key order differs)
// JSON Diff (this tool) — correct: key order is irrelevant
// → 0 differences
// JSON Patch (RFC 6902) for { "a": 1 } → { "a": 2 }
// [{ "op": "replace", "path": "/a", "value": 2 }] Temel Özellikler
Yan Yana + JSON Patch
Tek diff'ten iki görünüm: inceleme için görsel vurgulama, otomasyon için RFC 6902 patch.
Gürültülü Alanları Yoksay
Tek tıkla ön ayarlar /createdAt, /updatedAt, /*Id, /*At, requestId, traceId alanlarını çıkarır. Özel Extended JSON Pointer kalıpları desteklenir.
Dizileri Anahtarla Eşleştir
Nesneler dizisini indeks yerine id alanına göre karşılaştırın — K8s ortamları, package-lock girişleri veya mantıksal olarak sırasız listeler için.
Varsayılan Olarak Tür Katı
1 ≠ "1". null ≠ eksik. Arka uç serileştirme kaymasını test fixture'a düştüğü anda yakalayın.
%100 Tarayıcı Tabanlı
Girişler makinenizden asla çıkmaz. Yükleme yok, JSON'un localStorage'a kaydedilmesi yok, yapıştırdıklarınız üzerinde analitik yok.
Veriyi Değil Bağlantıyı Paylaşın
Paylaşım Bağlantısı yalnızca yapılandırmanızı URL'ye yazar. JSON girişleriniz yerel kalır.
Örnekler
API Yanıt Regresyonu
{"user":{"id":1,"name":"Ada","createdAt":"2024-01-01"}} {"user":{"id":1,"name":"Ada Lovelace","createdAt":"2024-02-02"}} İki değişiklik (name + createdAt). Yoksay yollarına /user/createdAt ekleyin; yalnızca isim değişikliği kalır.
Yapılandırma Dosyası Denetimi (Anahtar Yeniden Sıralama)
{"a":1,"b":2,"c":3} {"c":3,"a":1,"b":2} Aynı veri, farklı anahtar sırası. JSON Diff anahtar sırasını anlam bakımından önemsiz sayar — diff boş çıkar.
Nesne Dizisi (Anahtarla Eşleştirme)
[{"id":1,"qty":3},{"id":2,"qty":5}] [{"id":2,"qty":5},{"id":1,"qty":4}] Dizi modunu 'Anahtarla eşleştir' olarak değiştirin ve key=id girin. Hizalama olmadan her eleman değişmiş görünür; hizalamayla yalnızca id=1 elemanındaki qty değişir.
JSON Patch Çıktısı (RFC 6902)
{"items":[{"id":1,"price":29.99}]} {"items":[{"id":1,"price":24.99}]} JSON Patch sekmesine geçerek fast-json-patch ile uygulayabileceğiniz [{"op":"replace","path":"/items/0/price","value":24.99}] çıktısını alın.
Nasıl Kullanılır
- 1
Her iki JSON belgesini yapıştırın
Orijinal (sol) ve değiştirilmiş (sağ) JSON'u yapıştırın. Canlı diff siz yazarken oluşturulur; büyük girişlerde (>200 KB) manuel Diff düğmesine geçilir.
- 2
Gürültüyü filtreleyin
Bir ön ayara (Zaman Damgaları / Kimlikler / İz) tıklayın veya Yoksay yollarına Extended JSON Pointer kalıpları yapıştırarak ilgisiz alanları çıkarın.
- 3
İhtiyacınız olan görünümü seçin
İnsan incelemesi için Yan Yana, makine uygulanabilir işlemler için JSON Patch (RFC 6902). Yapılandırmayı bir takım arkadaşıyla paylaşmak için Paylaşım Bağlantısı'nı kullanın.
Yaygın Diff Hataları
Anahtar Sırası Gürültüsü (Metin Diff Belirtisi)
Diff aracınız {"a":1,"b":2} ile {"b":2,"a":1}'i farklı olarak raporluyorsa, JSON diff değil satır diff yapıyordur. JSON anahtarları sırasızdır — bu araç anahtar sırasını otomatik olarak yoksayar.
diff a.json b.json # text diff: 'everything changed'
JSON Diff (this tool): 0 differences
Null ile Eksik Karışıklığı
{"a":null} ile {} aynı değildir. Bunları eşit kabul etmek gerçek arka uç hatalarını gizler.
{"a": null} == {} # collapsed by some tools {"a": null} ≠ {} # type-strict diff Anahtar Hizalaması Olmadan Dizi Sırası
[{id:1},{id:2}] ile [{id:2},{id:1}] mantıksal bir küme için 'iki değişiklik' değildir. Sıralı mod bunu öyle raporlar; Anahtarla Eşleştir'e geçin.
Sequential diff: 4 modified
Match by key (id): 0 differences
Tür Kayması (Sayı ile Dize)
Arka uçlar bazen kimlikleri tutarsız serileştirir — 42 ile "42". Araç bunları 'tür' değişiklikleri olarak işaretler; böylece kaymaları erkenden fark edebilirsiniz.
{"id": 42} vs {"id": "42"} # serialization bug Diff reports 'modified (type)' with both values
Kayan Nokta Hassasiyeti
IEEE 754'te 0.1 + 0.2 !== 0.3. tolerans=0 (varsayılan) ile bu işaretlenir. Sayısal eşdeğerlik istiyorsanız toleransı 1e-9 olarak ayarlayın.
tolerance=0: 0.30000000000000004 ≠ 0.3
tolerance=1e-9: equal
Zaman Damgası ve UUID Gürültüsü
createdAt, updatedAt, requestId, traceId her istekte değişir. Bunları çıkarmak için Yoksay yolları ön ayarlarını kullanın.
Diff: 47 modifications (45 are timestamps)
Add /createdAt, /updatedAt, /requestId to Ignore paths → 2 real changes
Yaygın Kullanım Senaryoları
- API Yanıt Regresyonu
- Hazırlık ile üretim yanıtlarını karşılaştırın; yalnızca anlamlı veri yükü değişikliklerini ortaya çıkarmak için zaman damgalarını ve istek kimliklerini yoksayın.
- CI Anlık Görüntü Test Hataları
- Başarısız bir Jest/Vitest anlık görüntüsündeki gerçek ile beklenen değerleri yapıştırın. Gürültüyü filtreleyin ve gerçek değişikliği saniyeler içinde bulun.
- package-lock / yarn.lock Çakışmaları
- Bağımlılıkları ada göre hizalayarak birleştirme çakışmalarını çözün; anahtar sırası ve ilgisiz alanlar gürültü olmaktan çıkar.
- K8s / Helm Değerleri Denetimi
- Ortamları, volumeMounts ve portları ada göre eşleştirin. Kasıtsız sıralama değişikliklerini gerçek yapılandırma düzenlemelerinden ayırt edin.
- i18n Çeviri Kapsamı
- en.json ile zh.json'u yapısal olarak karşılaştırarak değer gürültüsü olmadan eksik veya fazla çeviri anahtarlarını bulun.
- Terraform / CDK Plan İncelemesi
- Plan çıktısını farklı çalıştırmalar arasında karşılaştırın; sayısal tolerans kayan nokta aritmetiğini dengeler, yoksay yolları ARN'leri ve zaman damgalarını çıkarır.
Teknik Detaylar
- RFC 6902 Uyumlu Patch Çıktısı
- RFC 6901 yollarıyla geçerli JSON Patch işlemleri (add/remove/replace) üretir. fast-json-patch@3.x ve rfc6902 npm paketlerine karşı doğrulanmıştır.
- Yinelemeli Geçiş
- Açık yığın geçişi (özyineleme yok), olumsuz girişlerde yığın taşmasını önlemek için 100.000 düğüm ve 64 derinlikle sınırlıdır.
- Object.is Sayısal Eşitlik
- Varsayılan sayısal tolerans 0'dır — Object.is kullanır, bu nedenle -0 ile +0 ayırt edilir. Epsilon tabanlı eşitlik için toleransı 0'ın üzerine ayarlayın.
En İyi Uygulamalar
- İncelemeden Önce Filtreleyin
- Önce Yoksay yollarını ekleyin (zaman damgaları, kimlikler, iz alanları), sonra diff'i okuyun. Gürültülü diff'leri incelemek, gözü gerçek değişiklikleri atlamaya alıştırır.
- Mantıksal Kümeler için Anahtarla Eşleştir
- Diziniz sırasız bir kümeyi temsil ediyorsa (ortamlar, kullanıcılar, bağımlılıklar) Anahtarla Eşleştir kullanın. Mantıksal kümelerde sıralı diff neredeyse her zaman yanlıştır.
- Girişleri Değil Bağlantıyı Paylaşın
- Bir meslektaşınıza filtre yapılandırmanızı göndermek için Paylaşım Bağlantısı'nı kullanın — hassas JSON'u paylaşılan belgelere asla yapıştırmayın. URL yalnızca yapılandırmayı içerir.
Sık Sorulan Sorular
Yalnızca bir alan değiştirdiğimde neden diff'im her şeyin değiştiğini gösteriyor?
JSON diff'te zaman damgalarını ve kimlikleri nasıl yoksayarım?
JSON Patch ile görsel diff arasındaki fark nedir?
JSON diff, null ile eksik anahtarları aynı kabul eder mi?
Diziler indeksle mi anahtarla mı karşılaştırılır?
Diff'i RFC 6902 JSON Patch olarak dışa aktarabilir miyim?
JSON Patch ile JSON Merge Patch (RFC 7396) aynı şey midir?
Büyük JSON dosyalarını (>10 MB) nasıl karşılaştırabilirim?
Araç JSON'umu sunucuya gönderiyor mu?
Diff'te neden 42 ile "42" farklı görünüyor?
Yorumlu JSON (JSONC) veya sondaki virgüllü JSON ile diff yapabilir miyim?
id gibi bir anahtar kullanarak iç içe nesne dizilerini nasıl karşılaştırırım?
Diff kayan nokta hassasiyetini (0.1 + 0.2) ele alıyor mu?
İlgili Araçlar
Tüm araçları görüntüleyin →Base64 Çözücü ve Kodlayıcı
Kodlama ve Biçimlendirme
Base64'ü ücretsiz çevrimiçi kodlayın ve çözün. Tam UTF-8 ve emoji desteğiyle gerçek zamanlı dönüştürme. %100 tarayıcıda — kayıt gerekmez.
Base64'ü Görsele Çevirme Aracı
Kodlama ve Biçimlendirme
Bir Base64 dizesini ya da data URI'yi tarayıcınızda görsele geri çözün. Önizleyin, boyutları ve MIME'ı okuyun, ardından PNG, JPG, GIF, SVG olarak indirin. Yükleme yok.
CSV'den JSON'a Dönüştürücü
Kodlama ve Biçimlendirme
CSV'yi tarayıcınızda JSON'a dönüştürün. RFC 4180, tür çıkarımı, başlık satırı, büyük tam sayı güvenli. %100 gizli, yükleme yok.
.env'den JSON'a Dönüştürücü
Kodlama ve Biçimlendirme
Bir .env dosyası yapıştırın, anında JSON alın. Sırlarınız tarayıcınızdan asla çıkmaz — %100 gizli, yükleme yok, ücretsiz dotenv ayrıştırıcı.
Ücretsiz HTML Varlık Çözücü — HTML Unescape
Kodlama ve Biçimlendirme
HTML varlıklarını çözün ve HTML'i çevrimiçi unescape edin — ücretsiz, kayıt yok, %100 tarayıcınızda. Adlı, ondalık & hex referansları tekrar karaktere çevirir; asla yüklenmez.
Ücretsiz HTML Varlık Kodlayıcı — HTML Escape
Kodlama ve Biçimlendirme
HTML varlıklarını kodlayın ve özel karakterleri (< > & " ') çevrimiçi escape edin — ücretsiz, kayıt yok, %100 tarayıcınızda. Adlı, ondalık veya hex çıktı; asla yüklenmez.