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 ve YAML to JSON ile dönüştürü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.
JSON Biçimlendirici ve Doğrulayıcı
Kodlama ve Biçimlendirme
JSON'u tarayıcınızda anında biçimlendirin, doğrulayın ve güzelleştirin. Sözdizimi denetimi, hata tespiti, sıkıştırma ve tek tıkla kopyalama. %100 gizli.
JSON'dan YAML'a Dönüştürücü
Kodlama ve Biçimlendirme
JSON yapıştırın, anında YAML alın. Tarayıcınızda canlı dönüştürme. K8s/Compose uyumlu, 2/4 boşluk girinti, Norway güvenli tırnak. %100 gizli, yükleme yok.
Yerleşik URL Ayrıştırıcılı URL Kodlayıcı ve Çözücü
Kodlama ve Biçimlendirme
URL'leri yerleşik URL ayrıştırıcısı ile gerçek zamanlı kodlayın veya çözün. İkili mod: encodeURI ve encodeURIComponent. %100 gizli, hiçbir veri sunucuya gönderilmez.
YAML'dan JSON'a Dönüştürücü
Kodlama ve Biçimlendirme
YAML yapıştırın, anında JSON alın. Tarayıcınızda canlı dönüştürme. K8s manifest'leri, OpenAPI spesifikasyonları ve Helm değerleri desteklenir. %100 gizli.
Sayı Tabanı Dönüştürücü — Binary, Hex, Decimal ve Octal
Dönüştürme Araçları
Binary, hex, decimal, octal ve herhangi bir taban (2-36) arasında anında dönüştürün. Ücretsiz ve gizli — tüm işlem tarayıcınızda yapılır.