Przegląd / Programowanie i kod / Porównywanie JSON
Programowanie i kod 100% w przeglądarce i offline

Porównywanie JSON

Porównaj dwa dokumenty JSON i zobacz każdą dodaną, usuniętą i zmienioną wartość wraz ze ścieżką JSON Pointer. Skopiuj wynik jako tekst lub JSON Patch.

Wklej lub wpisz dane; wynik pojawia się od razu, a błędy są pokazane pod polem.

Twoje pliki i dane nigdy nie opuszczają przeglądarki – nic nie jest wysyłane.

Obiekty są porównywane po kluczach, więc kolejność kluczy nigdy się nie liczy. Tablice są porównywane według pozycji, chyba że zignorujesz kolejność. Wtedy zmieniony element pojawia się jako jeden usunięty i jeden dodany.

Różnice

    Limity: 2 000 000 znaków na stronę. Liczby są czytane przez JSON.parse, więc liczby całkowite powyżej 2^53 tracą dokładność. Jeśli klucz występuje w tekście dwa razy, wygrywa ostatnia wartość. Lista pokazuje pierwsze 1000 różnic, a przyciski kopiowania używają wszystkich.

    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ęć

    1. Wklej oryginał w lewe pole, a zmienioną wersję w prawe. Przy otwarciu strony oba pola mają przykład.
    2. Poczekaj chwilę: porównanie rusza 200 ms po ostatnim klawiszu. Jeśli strona nie jest poprawnym JSON-em, komunikat podaje stronę, wiersz i kolumnę.
    3. Przycisk Sformatuj oba dodaje wcięcia w poprawnym JSON-ie, a Zamień strony pomaga, gdy wkleisz pliki odwrotnie.
    4. Włącz Ignoruj kolejność w tablicach, jeśli kolejność elementów listy nie ma dla ciebie znaczenia.
    5. 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.

    Często zadawane pytania (FAQ)

    Wklej oryginał w lewe pole, a zmienioną wersję w prawe. Po krótkiej przerwie pojawi się lista ze ścieżką, rodzajem zmiany oraz starą i nową wartością.