Formater JSON

Formatuj, waliduj, minifikuj i sortuj JSON.

O tym narzędziu

Wklej JSON, aby go ładnie sformatować z wybranym wcięciem, zminifikować do przesyłania albo posortować klucze alfabetycznie, żeby różnice były czytelne. Błędy składni są zgłaszane z numerem linii i kolumny.

Jak z tego korzystać

  1. Wklej JSON w pole Dane wejściowe albo wklej go w wyszukiwarkę za pomocą ⌘K i wybierz Formater JSON.
  2. Wybierz 2 spacje, 4 spacje, tabulatory albo Minifikuj, aby umieścić wszystko w jednej linii.
  3. Włącz Sortuj klucze, jeśli chcesz mieć klucze w kolejności alfabetycznej, co ułatwia porównanie dwóch wersji.
  4. Skopiuj wynik. Jeśli JSON jest nieprawidłowy, komunikat błędu wskaże linię i kolumnę do poprawienia.

Pytania

Dlaczego mój JSON jest nieprawidłowy?
Najczęstsze przyczyny to przecinek po ostatnim elemencie, apostrofy zamiast cudzysłowów, klucze bez cudzysłowów albo komentarze. JSON nie dopuszcza żadnej z tych rzeczy. Komunikat błędu wskazuje dokładną linię i kolumnę.
Czy odczyta słownik Pythona albo obiekt JavaScriptu?
Tak. Wartości w apostrofach, True, False, None, klucze bez cudzysłowów i przecinki na końcu są automatycznie konwertowane na prawidłowy JSON, a linia statusu informuje, że tak się stało.
Czy bezpiecznie jest wklejać odpowiedzi API z danymi osobowymi?
Tak. Formatowanie odbywa się w Twojej przeglądarce i nic nie jest wysyłane na serwer, więc możesz wkleić dane produkcyjne bez obawy, że opuszczą Twój komputer.
Czym różni się formatowanie od minifikacji?
Formatowanie dodaje podziały linii i wcięcia, żeby człowiek mógł to przeczytać. Minifikacja usuwa wszystkie zbędne białe znaki, by dane były jak najmniejsze do przesłania przez sieć.
Co się dzieje ze zduplikowanymi kluczami w obiekcie JSON?
Standard JSON nie zabrania zduplikowanych kluczy, ale nie określa ich znaczenia. Tutaj, tak jak w JSON.parse w każdej przeglądarce, wygrywa ostatnia wartość, więc {"a": 1, "a": 2} po formatowaniu daje {"a": 2}. Jeśli jakiś klucz znika po formatowaniu, poszukaj w danych wejściowych jego drugiej kopii.
Czy mogę sformatować duży plik JSON?
Tak. Kliknij Otwórz plik albo upuść plik na pole Dane wejściowe. Jest odczytywany lokalnie, nigdy nie jest przesyłany, a akceptowane są pliki do 50 MB. Bardzo duże dokumenty spowalniają przewijanie pola tekstowego, więc zamiast kopiować wynik, użyj przycisku Pobierz, aby zapisać go jako formatted.json.
Jak sformatować JSON Lines lub NDJSON?
JSON Lines zawiera jedną wartość JSON w każdej linii, więc plik jako całość nie jest poprawnym JSON-em i formater zgłasza błąd tam, gdzie zaczyna się druga wartość. Formatuj po jednej linii albo zamień plik w tablicę, otaczając go [ ] i dodając przecinek na końcu każdej linii poza ostatnią.

Co to jest formater i walidator JSON?

Formater JSON bierze zwięzły lub nieuporządkowany JSON i wypisuje go ponownie ze spójnymi wcięciami i jednym kluczem w linii, dzięki czemu zagnieżdżone dane stają się czytelne. Walidator JSON sprawdza, czy tekst jest zgodny z gramatyką JSON: klucze i ciągi w podwójnych cudzysłowach, brak przecinków na końcu, brak komentarzy i tylko true, false oraz null jako literały. To narzędzie robi obie rzeczy za jednym razem. Poprawne dane wracają sformatowane, a przy niepoprawnych zobaczysz komunikat parsera z numerem linii i kolumny.

Formatowanie JSON nigdy nie zmienia danych. Klucze, wartości i kolejność w tablicach pozostają dokładnie takie same, zmieniają się tylko białe znaki. Warto znać jedno ograniczenie: liczby w JSON są odczytywane jako liczby double z JavaScriptu, więc liczby całkowite większe niż 9007199254740991 tracą precyzję. Identyfikator taki jak 12345678901234567890 wraca jako 12345678901234567000. Jeśli API wysyła tak duże identyfikatory, poproś o nie jako ciągi znaków – wiele API robi tak już z 64-bitowymi ID.

Jak naprawić błąd „Unexpected token” w JSON?

„Unexpected token” oznacza, że parser JSON trafił na znak, który nie może wystąpić w tym miejscu. Odczytaj z błędu numer linii i kolumny i spójrz na tekst tuż przed tym miejscem. Najczęstsi winowajcy to przecinek na końcu, jak w [1, 2, ], klucz bez cudzysłowów, ciąg w apostrofach, komentarz // skopiowany z pliku konfiguracyjnego albo wartość taka jak NaN czy Infinity, którą JavaScript wypisuje, ale JSON jej nie dopuszcza.

Błąd „Unexpected token < in JSON at position 0” ma inną przyczynę: tekst jest stroną HTML, zwykle stroną błędu albo przekierowaniem do logowania, a nie oczekiwaną odpowiedzią API. Przed parsowaniem sprawdź status HTTP i nagłówek Content-Type. Gdy na wejściu jest słownik Pythona albo literał obiektu JavaScript, Formater JSON naprawia apostrofy, True, False, None, klucze bez cudzysłowów i przecinki na końcu, a każdą poprawkę wymienia w linii statusu.

Czy sortować klucze JSON? Dobre praktyki wcięć i sortowania

Kolejność kluczy w obiekcie JSON nie ma znaczenia, więc alfabetyczne sortowanie kluczy jest bezpieczne i ułatwia porównanie dwóch wersji. Sortuj klucze działa rekurencyjnie: zagnieżdżone obiekty też są sortowane, a tablice zachowują kolejność, bo w tablicy pozycja ma znaczenie. Posortuj obie wersje, wklej je do narzędzia Porównywarka tekstów, a zobaczysz tylko prawdziwe zmiany wartości, a nie klucze, które po prostu przeniosły się w inne miejsce.

Przy wcięciach w JSON 2 spacje to najczęstszy wybór w projektach JavaScript i dokumentacji API, 4 spacje odpowiadają nawykowi json.dumps(indent=4) z Pythona, a tabulatory pozwalają każdemu czytelnikowi wybrać własną szerokość. Zminifikowany JSON pasuje do danych przesyłanych przez sieć, zmiennych środowiskowych i linii logów, gdzie liczy się jeden rekord w linii. Cokolwiek wybierzesz, trzymaj się tego w całym repozytorium, żeby przeformatowanie nie zaśmiecało code review.

Coś nie działa albo wynik wygląda na błędny? Zgłoś problem z tym narzędziem