Porównaj dwa dokumenty JSON i dostaniesz listę samych różnic, a nie dwa długie pliki do czytania obok siebie. Narzędzie wczytuje oba teksty i porównuje dane, nie zapis. Wcięcia i kolejność kluczy nie dają więc fałszywych trafień. Porównywanie JSON kończy się listą: ścieżka, rodzaj zmiany, stara wartość, nowa wartość.
Porównywanie JSON: ścieżka, rodzaj zmiany, stara i nowa wartość
Ścieżka ma format z RFC 6901 (JSON Pointer). Zapis /uzytkownicy/0/imie oznacza klucz imie w pierwszym elemencie uzytkownicy. Ukośnik w kluczu zapisujemy jako ~1, a tyldę jako ~0. Rodzaje zmian są cztery: dodano, usunięto, zmieniono i zmiana typu. Każdy ma kolor, symbol (+, -, ~, !) i opis słowny, więc sam kolor nie niesie informacji.
Linia podsumowania liczy rodzaje zmian. Gdy obie strony są takie same, zobaczysz komunikat "Brak różnic".
Kolejność kluczy i elementów tablicy
Obiekty porównujemy po kluczach, dlatego {"a":1,"b":2} równa się {"b":2,"a":1}. Tablice porównujemy domyślnie według indeksu: [1,2,3] kontra [3,2,1] daje dwie zmiany, bo środkowy element jest ten sam.
Opcja Ignoruj kolejność w tablicach działa inaczej. Narzędzie buduje dla każdego elementu tekst kanoniczny z posortowanymi kluczami i dopasowuje równe elementy jak multizbiór. Zagnieżdżone tablice też są wtedy porównywane bez kolejności. Zmieniony w środku element pojawi się jako jeden usunięty i jeden dodany.
Liczby, null i puste obiekty w porównaniu JSON
Liczby porównujemy po wartości, więc 1 i 1.0 są równe. null to nie to samo co brak klucza. Pusty obiekt kontra pusta tablica to zmiana typu, podobnie jak 1 kontra "1". Napisy muszą być identyczne, łącznie z wielkością liter i spacjami.
Dwa pliki JSON, pięć kliknięć
- Wklej oryginał w lewe pole, a zmienioną wersję w prawe. Przy otwarciu strony oba pola mają przykład.
- Poczekaj chwilę: porównanie rusza 200 ms po ostatnim klawiszu. Jeśli strona nie jest poprawnym JSON-em, komunikat podaje stronę, wiersz i kolumnę.
- Przycisk Sformatuj oba dodaje wcięcia w poprawnym JSON-ie, a Zamień strony pomaga, gdy wkleisz pliki odwrotnie.
- Włącz Ignoruj kolejność w tablicach, jeśli kolejność elementów listy nie ma dla ciebie znaczenia.
- Przycisk Kopiuj diff jako tekst daje jedną linię na różnicę, a Kopiuj jako JSON Patch patch, który program może zastosować.
JSON Patch z listy różnic
Patch (RFC 6902) zawiera operacje add, remove i replace i zamienia lewą stronę w prawą. Elementy tablicy usuwamy od najwyższego indeksu w dół, a dodajemy od najniższego w górę. Narzędzie nie tworzy operacji move ani copy. Przy ignorowanej kolejności przycisk jest wyłączony, bo patch wskazuje elementy po pozycji.
Limity parsowania JSON i to, co zostaje w przeglądarce
Parsowanie i porównanie odbywają się w twojej przeglądarce przez JSON.parse. Narzędzie nie wysyła żądań i niczego nie zapisuje, co potwierdzisz w panelu sieci. Schowek jest używany tylko po kliknięciu przycisku kopiowania.
Każda strona może mieć 2 000 000 znaków, większe dane są odrzucane z komunikatem. Liczby całkowite powyżej 2^53 tracą dokładność: 9007199254740993 jest czytane jako 9007199254740992, więc dwie różne ogromne liczby mogą wyglądać tak samo. Gdy klucz występuje dwa razy, wygrywa ostatnia wartość. Komentarze i końcowe przecinki nie są JSON-em, a błąd pokazuje wiersz i kolumnę. Lista pokazuje pierwsze 1000 różnic, przyciski kopiowania używają wszystkich. Znacznik BOM na początku jest usuwany przed parsowaniem.