JSON Diff odnosi się do porównywania dwóch zestawów danych JSON w celu znalezienia dodanych, usuniętych i zmodyfikowanych pól między nimi. W codziennym tworzeniu oprogramowania często musimy wiedzieć, „co dokładnie jest inne” między dwoma JSON: co zmieniło się w strukturze odpowiedzi przed i po aktualizacji API, gdzie konfiguracje różnią się między dwoma środowiskami, które pole odbiega między rzeczywistymi wynikami a oczekiwanymi liniami bazowymi w testach automatycznych. Ręczne sprawdzanie linia po linii jest powolne i podatne na błędy; narzędzie JSON Diff może automatycznie podświetlać różnice.
Porównywanie JSON diff generalnie przebiega według dwóch podejść. Jedno to „diff tekstowy”: po sformatowaniu JSON do kanonicznego wielowierszowego tekstu, wykonanie porównania podobnego do Git diff linia po linii, intuicyjnie pokazując dodania, usunięcia i modyfikacje na linię. Drugie to „diff strukturalny/semantyczny”: parsowanie JSON do struktury drzewa i porównywanie wartości i typów jeden po drugim według ścieżki pola (np. user.address.city), bez wpływu kolejności pól, wcięć lub innych czynników formatowania. To narzędzie oferuje zarówno Widok Tekstowy, jak i Widok Semantyczny, przełączane w razie potrzeby.
Dlaczego formatować przed porównaniem? Ponieważ te same dane mogą mieć zupełnie inne formatowanie (jednolinijkowe vs wielowierszowe, wcięcie 2 spacje vs 4 spacje). Gdyby porównywać bezpośrednio jako surowy tekst, pojawiłoby się wiele „fałszywych różnic” spowodowanych odmiennościami formatowania. To narzędzie automatycznie parsuje i jednolicie formatuje obie strony przed porównaniem, eliminując zakłócenia z białych znaków, dzięki czemu widzisz tylko naprawdę znaczące zmiany danych.
Zauważ, że kolejność kluczy w obiektach JSON jest semantycznie nieistotna ({"a":1,"b":2} jest równoważne {"b":2,"a":1}), ale kolejność elementów tablicy jest znacząca ([1,2] jest inne niż [2,1]). Dlatego, gdy zależy Ci tylko na spójności zawartości tablicy niezależnie od kolejności, zalecamy posortowanie tablic lub posortowanie kluczy przed porównaniem, aby uniknąć błędnego uznawania zmian kolejności za różnice.
Całe formatowanie i porównywanie w tym narzędziu odbywa się lokalnie w przeglądarce; dane nigdy nie są przesyłane na serwery. Obsługuje również podświetlanie na poziomie znaków, liczenie dodawań/usunięć/modyfikacji, jednoczesne porównywanie w wielu kartach oraz udostępnianie scenariuszy porównania przez adres URL, odpowiednie do scenariuszy integracji API, porównywania konfiguracji, asercji testowych i Code Review.