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ć
- Wklej JSON w pole Dane wejściowe albo wklej go w wyszukiwarkę za pomocą ⌘K i wybierz Formater JSON.
- Wybierz 2 spacje, 4 spacje, tabulatory albo Minifikuj, aby umieścić wszystko w jednej linii.
- Włącz Sortuj klucze, jeśli chcesz mieć klucze w kolejności alfabetycznej, co ułatwia porównanie dwóch wersji.
- 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