JSON Diff
İki JSON belgesi için yapısal diff — eklenen, silinen, değişen anahtarlar ve değer değişiklikleri yan yana gösterilir.
Sonucu görmek için yukarıya giriş yapın.
Bu ne işe yarar?
JSON üzerinde düz metin diff hangi satırların değiştiğini söyler; yapısal diff hangi veri noktalarının değiştiğini söyler. Sıklıkla çok farklılaşır — anlam değişikliği olmayan yeniden biçimlendirilmiş bir belge metin diff için "her satır farklı"dır ama burada "değişiklik yok"tur. Bu araç her iki JSON ağacında yürür ve farklı oldukları her yolu raporlar, biçimlendirme ne olursa olsun çıktının belirsiz olmaması için RFC 6901 JSON Pointer sözdizimini (/users/0/name) kullanır.
Ne zaman kullanılır
- İki API yanıtını karşılaştırarak bir sürümde gerçekten ne değiştiğini görme, boşluk/anahtar-sırası gürültüsünü yok sayma.
- Bir geçişten önce/sonra config dosyalarını diff'leyerek yalnızca amaçlanan alanların taşındığını doğrulama.
- Destekleyen bir sisteme gönderilecek bir RFC 6902 JSON Patch belgesi üretme (PATCH endpoint'leri, JSON-Merge-Patch fallback'leri).
- Birinin başarısız olmasını diğerinin başarılı olmasını sağlayan şeyin ne olduğunu görmek için iki test fixture'ına bakma.
Sık yapılan hatalar
- Array karşılaştırma modu önemlidir. "İndeks ile" eklenen bir elementi sonrasındaki her şey için remove+add olarak raporlar. "Değer ile" array'leri set olarak ele alır, gerçek yeniden sıralamaları kaçırır. Verinin nasıl sıralanması gerektiğine uyan birini seç.
- Sayı-vs-string yapısal değildir.
{"id": 1}ve{"id": "1"}türler farklı olduğu için değişiklik olarak gösterilir. Önemliyse, diff'lemeden önce türleri normalize et. - RFC 6902 tek yönlü bir patch'tir, merge değil. String-değiştirme ile değil, gerçek bir RFC 6902 uygulamasıyla uygula.
- Büyük ağaçlar gürültülü olur. Diff yüzlerce işlem uzunsa, muhtemelen iki ilgisiz belgeyi karşılaştırıyorsun — girdileri yeniden kontrol et.