Przejdź do treści
Quaestio

Formatowanie JSON

Wklej JSON, a zostanie sformatowany albo ściśnięty do jednego wiersza.

Wynik

Wklej JSON w polu powyżej.
Osadź

Osadź to narzędzie na swojej stronie

Skopiuj kod i wklej go tam, gdzie ma się pojawić narzędzie, np. we wpisie na blogu albo na stronie szkoły. To nic nie kosztuje, ramka nie zawiera reklam, a narzędzie liczy w przeglądarce odwiedzającego.

Jak to działa

JSON to tekstowy format danych strukturalnych, złożony z obiektów z nazwanymi polami, tablic, łańcuchów znaków, liczb oraz wartości true, false i null.

Formatowanie zmienia tylko białe znaki. Dane są identyczne przed i po, więc możesz bezpiecznie sformatować plik przed czytaniem.

Minifikacja usuwa wszystkie zbędne spacje i znaki nowego wiersza, co zwykle zmniejsza JSON z wcięciami o dwadzieścia do trzydziestu procent.

Gdy tekstu nie da się sparsować, komunikat pochodzi z parsera przeglądarki i zwykle wskazuje nieoczekiwany znak. Najczęstsze przyczyny to przecinek przed nawiasem zamykającym i niewłaściwy rodzaj cudzysłowu.

W JSON nie wolno umieszczać komentarzy, a nazwy pól muszą być w prostych cudzysłowach podwójnych. To najczęstsza różnica względem zapisu obiektów w JavaScripcie.

Jak formatuje narzędzie

Narzędzie robi dwie rzeczy po kolei. Najpierw tekst trafia do funkcji przeglądarki JSON.parse, ale tylko po to, żeby sprawdzić, czy jest poprawny. Samo formatowanie przechodzi potem przez twój tekst znak po znaku: usuwa białe znaki poza łańcuchami i dodaje znaki nowego wiersza oraz wcięcia z dwóch albo czterech spacji po nawiasach klamrowych i kwadratowych oraz po przecinkach. Puste obiekty i tablice są zapisywane bez odstępu w środku. Łańcuchy znaków są przepisywane bez zmian, razem z sekwencjami ucieczki. Minifikacja to to samo przejście, tylko bez znaków nowego wiersza i wcięć.

Liczby zostają takie, jak je zapisano

Wczytanie JSON do JavaScriptu i ponowny zapis mogą zmienić liczby, bo JavaScript ma jeden typ liczbowy o ograniczonej precyzji. Sprawdzone kodem narzędzia: liczba całkowita 12345678901234567890 zmienia się w 12345678901234567000, liczba 1.0 w 1, a 1e400 w null. W narzędziu wszystkie trzy zostają dokładnie takie, jak je zapisano. RFC 8259 uznaje za bezpieczne między systemami tylko liczby całkowite do 2⁵³ − 1, czyli 9 007 199 254 740 991, a I-JSON (RFC 7493) zaleca, by większe liczby, które muszą być dokładne, przesyłać jako łańcuchy znaków.

Powtórzone nazwy

Obiekt, w którym ta sama nazwa występuje dwa razy, przechodzi sprawdzenie. RFC 8259 mówi tylko, że nazwy powinny być unikatowe, a to, co odbiorca zrobi z powtórzeniami, jest nieprzewidywalne; wiele parserów zachowuje tylko ostatnią wartość. Narzędzie zachowuje obie, więc powtórzenie widać w wyniku. Przejście przez JavaScript po cichu usunęłoby pierwszą wartość. I-JSON w ogóle zabrania powtórzeń.

Częste błędy

Tabulator albo znak nowego wiersza wewnątrz łańcucha znaków sprawia, że tekst jest niepoprawny, bo RFC 8259 wymaga, by znaki sterujące U+0000–U+001F były zapisane jako sekwencje ucieczki, np. \t dla tabulatora. Łatwo o to, gdy tekst jest wklejany z arkusza kalkulacyjnego. Odrzucane są też NaN i Infinity, które istnieją w JavaScripcie, ale nie w JSON, oraz znacznik kolejności bajtów (BOM) na początku tekstu, choć RFC 8259 pozwala parserom go pomijać.

Źródła

Jak sprawdzamy narzędzia