Trzy tryby, jedno miejsce pracy. Formatowanie, walidacja i porównanie korzystają z tego samego parsera i tego samego edytora, więc dokument zachowuje się tak samo niezależnie od trybu, a przełączanie między nimi nigdy nie przeformatowuje tego, co wkleiłeś.
Co robi każdy tryb
| Tryb | Co robi |
|---|
| FormatowaniePrzepisuje | Wcięcia dwiema spacjami, czterema albo tabulatorem, usunięcie białych znaków z powrotem lub rekurencyjne sortowanie kluczy w obie strony. Wartości, sekwencje ucieczki i Unicode wracają dokładnie takie, jakie były, a tablice zachowują kolejność. |
| WalidacjaWskazuje miejsce | Nazywa błąd i wskazuje jego miejsce, zamiast zgłaszać, że dokument jest nieprawidłowy, i zostawiać Ci szukanie gdzie. |
| PorównaniePorównuje dane | Dwa dokumenty zestawione według tego, co znaczą, z każdą zmianą opisaną jako dodana, usunięta, zmieniona albo o zmienionym typie. |
Błędy są wskazywane, nie tylko zgłaszane
Nazwanych jest dziewiętnaście różnych przyczyn, każda z wierszem, kolumną i przesunięciem w bajtach, a sąsiednie wiersze są wypisywane z daszkiem pod znakiem. Przecinek przed nawiasem zamykającym, klucz w apostrofach, gołe słowo, komentarz, nieprawidłowa sekwencja ucieczki i surowy znak sterujący w łańcuchu czytają się jako one same, a nie jako jeden ogólny błąd parsowania.
Dwa błędy, które może nieść poprawny dokument
Obie są zgłaszane w dokumentach, które parsują się czysto, bo obie po cichu zmieniają Twoje dane. Zduplikowanego klucza nie odzyska już nic: JSON.parse zachowuje tylko ostatnią wartość i tak samo robi każdy inny parser, z którym prawdopodobnie się zetkniesz, więc ostrzeżenie nazywa klucz i jego wiersz, żeby dało się naprawić źródło. Liczba całkowita powyżej 2^53 zmienia wartość w chwili, gdy odczyta ją JavaScript, i tak właśnie 64-bitowy identyfikator po cichu staje się innym identyfikatorem.
Czego porównanie nie nazwie różnicą
Wcięcia, znaki końca wiersza i kolejność, w jakiej zapisano klucze obiektu, nie niosą w JSON znaczenia, więc nie są różnicami. Kolejność w tablicy znaczenie niesie i jest porównywana jako sekwencja, dlatego jeden wstawiony element czyta się jako jedno wstawienie, a nie jako zmiana każdego kolejnego elementu.
Jak czytać dokument, którego nie da się przewinąć
- Drzewo otwiera się po jednym poziomie, więc duży plik nie zamienia się w dużą stronę. Każdy wiersz niesie ścieżkę, która do niego prowadzi, users[4].email, z przyciskiem do skopiowania ścieżki albo wartości.
- Wyszukiwanie po kluczach, po wartościach albo po obu, z licznikiem trafień i przechodzeniem między nimi.
- Statystyki pojawiają się, gdy dokument się sparsuje: klucze, obiekty, tablice, łańcuchy, liczby, wartości logiczne, null, maksymalna głębokość, rozmiar i wiersze.
- Konwersje do YAML, do interfejsu TypeScript albo do CSV. Gdy dokument nie może być tabelą, ścieżka CSV mówi, jakiego kształtu potrzebowała, zamiast wypuszczać coś mylącego.
Sufit to 5 MiB. Powyżej mniej więcej 300 KiB kolorowanie składni wyłącza się, żeby pisanie pozostało płynne, a w bardzo dużych dokumentach szczegółowe porównanie kończy się wcześniej i mówi o tym; walidacja i statystyki działają w całym zakresie.
Za tą stroną nie ma punktu API. Dokument jest parsowany w pamięci przeglądarki i nigdy nie trafia na serwer, nic nie jest zapisywane w magazynie ani w pasku adresu, a jedyne, co zostaje między wizytami, to wybrane wcięcie.