Formatowanie i sprawdzanie poprawności JSON
Zwiększ czytelność JSON, sprawdź jego składnię lub utwórz zwartą wersję. Ten przewodnik omawia wcięcia, sortowanie kluczy i zapisywanie wyniku.
Wypróbuj dostarczony przykład
Pobierz order-options.json — fikcyjne zamówienie z dwiema pozycjami i nazwami pól po angielsku. Obiekt customer zawiera imię i miasto, a tablica items zawiera CARD-02, a następnie BOX-01. Przykład obejmuje tekst w cudzysłowach, liczbowe ilości i ceny, wartość logiczną true oraz null oznaczające pustą notatkę dotyczącą dostawy. Pola celowo nie są posortowane, aby pokazać działanie opcji sortowania.
Krok po kroku
- Otwórz Formatowanie i walidacja JSON. Użyj Plik, aby otworzyć dostarczony plik order-options.json, lub wklej jego zawartość do Twoje dane.
- Ustaw Wcięcie na 2, aby użyć dwóch spacji na poziom. Przy pierwszym przetwarzaniu pozostaw Sortuj klucze obiektów niezaznaczone.
- Wybierz Przetwórz dane. Narzędzie sprawdza składnię JSON przed wyświetleniem wyniku. Jeśli zgłosi błąd, znajdź problem za pomocą numeru wiersza i kolumny, popraw dane wejściowe i spróbuj ponownie.
- Przeczytaj wynik. Obiekt customer i dwie pozycje powinny być czytelne, z jednym polem lub elementem listy w każdym wierszu. Gdy sortowanie jest wyłączone, pola zachowują kolejność z przykładu.
- Wybierz Pobierz wynik, aby zapisać formatted.json. Możesz też użyć Kopiuj tekst, aby przenieść wynik do innego edytora.
- Otwórz pobrany plik w edytorze tekstu i porównaj go z przykładem, korzystając z poniższych wskazówek. Następnie wypróbuj inne opcje wcięć i sortowania, wybierając Przetwórz dane po każdej zmianie.
Przykłady przed i po
Te krótkie przykłady pokazują obiekt customer z order-options.json jako niewielki dokument JSON. Porównaj to samo imię i miasto przed zastosowaniem każdego ustawienia i po nim. Opcjonalna sekcja referencyjna na końcu pokazuje całe zamówienie.
Zwiększanie czytelności zwartego JSON
Ustaw Wcięcie na 2, pozostaw Sortuj klucze obiektów niezaznaczone i wybierz Przetwórz dane. Wynik otrzyma podziały wierszy i dwie spacje na poziom, zachowując pierwotną kolejność pól.
Przed: zwarta postać wejściowa
{"customer":{"name":"Zoë","city":"Bergen"}}Po: wcięcia z dwóch spacji
{
"customer": {
"name": "Zoë",
"city": "Bergen"
}
}Sortowanie kluczy wewnątrz obiektu
Pozostaw Wcięcie ustawione na 2, zaznacz Sortuj klucze obiektów i wybierz Przetwórz dane. W obiekcie customer pole city znajduje się teraz przed name. Obie wartości pozostają takie same.
Przed: pierwotna kolejność kluczy
{
"customer": {
"name": "Zoë",
"city": "Bergen"
}
}Po: posortowane klucze obiektu
{
"customer": {
"city": "Bergen",
"name": "Zoë"
}
}Tworzenie zwartego JSON
Wybierz Minifikuj w Wcięcie, pozostaw Sortuj klucze obiektów niezaznaczone i wybierz Przetwórz dane. Spacje służące formatowaniu i podziały wierszy znikną, a tekst i kolejność pól pozostaną bez zmian.
Przed: wcięcia z dwóch spacji
{
"customer": {
"name": "Zoë",
"city": "Bergen"
}
}Po: Minifikuj
{"customer":{"name":"Zoë","city":"Bergen"}}Wybór wcięć
| Opcja | Działanie |
|---|---|
| 2 | Używa dwóch spacji na każdy poziom zagnieżdżenia. To ustawienie z głównej instrukcji. |
| 4 | Używa czterech spacji na każdy poziom zagnieżdżenia, mocniej wyróżniając zagnieżdżone obiekty i tablice. |
| ↹ | Używa tabulatora na każdy poziom zagnieżdżenia. Jego szerokość na ekranie zależy od edytora tekstu. |
| Minifikuj | Usuwa spacje służące formatowaniu i podziały wierszy. Spacje wewnątrz tekstu w cudzysłowach pozostają częścią tego tekstu. Wybierz tę opcję dla zwartego wyniku, a następnie Przetwórz dane. |
Zmiana danych wejściowych lub opcji usuwa poprzedni wynik. Wybierz ponownie Przetwórz dane, aby utworzyć wynik z nowymi ustawieniami. Narzędzie za każdym razem odczytuje pole wejściowe; nie wstawia do niego automatycznie poprzedniego wyniku.
Sortowanie kluczy obiektów
Pozostaw Sortuj klucze obiektów niezaznaczone, aby zachować pierwotną kolejność pól każdego obiektu. Po zaznaczeniu klucze są sortowane według kolejności tekstowej z rozróżnianiem wielkości liter w całym dokumencie, także w obiektach wewnątrz tablic. Same elementy tablic zachowują pierwotną kolejność.
- Pozostaw Wcięcie ustawione na 2, zaznacz Sortuj klucze obiektów i wybierz Przetwórz dane.
- Klucze najwyższego poziomu mają teraz kolejność customer, deliveryNote, items, order i paid. W customer pole city poprzedza name. W każdej pozycji price poprzedza quantity i sku.
- Tablica items nadal zawiera CARD-02, a następnie BOX-01. Sortowanie kluczy nie sortuje pozycji według sku ani ceny.
Kopiowanie, pobieranie i rozpoczynanie od nowa
| Opcja | Działanie |
|---|---|
| Kopiuj tekst | Kopiuje bieżący wynik jako tekst. Jeśli kopiowanie jest niedostępne, narzędzie zaznacza wynik, aby można było skopiować go ręcznie. |
| Pobierz wynik | Zapisuje bieżący wynik jako formatted.json. Ta nazwa jest używana dla wyników sformatowanych, zwartych i posortowanych, więc zmień nazwy plików, jeśli chcesz zachować kilka wersji. |
| Drukuj wyniki | Otwiera okno drukowania przeglądarki dla tekstu wyniku. |
| Wczytaj przykład | Zastępuje dane wejściowe przykładem wbudowanym w narzędzie i przetwarza go z bieżącymi ustawieniami. Ten przykład różni się od order-options.json z tego przewodnika. |
| Usuń wszystko | Usuwa dane wejściowe, wybrany plik i wynik. Wybrane ustawienia wcięć i sortowania pozostają bez zmian. |
Sprawdzenie pobranego JSON
- Otwórz formatted.json w edytorze tekstu. Sprawdź, czy zamówienie to ORD-1042, klient to Zoë z Bergen i czy są dwie pozycje.
- Sprawdź wartości i ich typy: quantity to liczba 2, a następnie 1, ceny zachowują zapis 19.50 i 5.00, paid to wartość logiczna true bez cudzysłowów, a deliveryNote to null bez cudzysłowów. Imiona i kody pozycji w cudzysłowach pozostają ciągami znaków.
- Po wypróbowaniu Sortuj klucze obiektów sprawdź opisaną wyżej kolejność pól i upewnij się, że CARD-02 nadal poprzedza BOX-01 w tablicy items.
- Wypróbuj Minifikuj i Przetwórz dane. Wklej wynik z powrotem do Twoje dane, ustaw Wcięcie na 2 i ponownie wybierz Przetwórz dane. Porównaj wartości i kolejność pozycji z pierwotnym przykładem; opcje formatowania powinny je zachować.
Pytania i rozwiązywanie problemów
Dlaczego narzędzie zgłasza nieprawidłowy JSON?
Sprawdź wskazany wiersz i kolumnę oraz pole bezpośrednio przed tym miejscem. Klucze i tekst wymagają podwójnych cudzysłowów, pola — przecinków i dwukropków, a nawiasy kwadratowe i klamrowe muszą być zamknięte. Popraw dane wejściowe i ponownie wybierz Przetwórz dane. Sprawdzana jest składnia JSON, więc poprawny wynik może nadal nie zawierać pól wymaganych przez aplikację.
Czy można używać komentarzy lub końcowego przecinka?
Usuń komentarze i przecinki bezpośrednio przed zamykającym nawiasem kwadratowym lub klamrowym. Nie są dozwolone w JSON. Narzędzie wymaga poprawnych danych wejściowych i nie naprawia ich automatycznie.
Co oznacza ostrzeżenie o powtórzonym kluczu?
Komunikat „Powtarzające się klucze zachowano. Niektóre programy odrzucają powtórzone klucze.” oznacza, że klucz występuje więcej niż raz w tym samym obiekcie. Narzędzie zachowuje te wpisy i wyświetla ostrzeżenie. Sprawdź źródło, wybierz zamierzoną wartość i usuń dodatkowy wpis; inna aplikacja może zachować tylko jeden z nich.
Dlaczego nie można otworzyć lub przetworzyć pliku?
Limit wejściowy wynosi 2 MiB, czyli 2 097 152 bajty. Lokalne pliki tekstowe muszą używać UTF-8. Jeśli narzędzie zgłosi zbyt dużą złożoność danych, zmniejsz poziom zagnieżdżenia lub liczbę wpisów. Podziel duże dane wejściowe na mniejsze, kompletne dokumenty JSON, zamiast przecinać je w środku obiektu lub tablicy.
Dlaczego długie liczby zmieniają się w innej aplikacji?
Osobny przykład precyzji poniżej zawiera 9007199254740993 i 0.10000000000000001. Narzędzie zachowuje dokładny zapis tych liczb przy każdym ustawieniu wcięć i sortowania. Sformatuj exact-numbers.json i porównaj wynik z exact-numbers-formatted.json w edytorze tekstu. Aplikacja importująca wynik może nadal zaokrąglać liczby, dlatego sprawdź, czy obsługuje wymaganą precyzję. Kod z zerami na początku, taki jak 00123, musi być w JSON ciągiem znaków w cudzysłowach.
Czy formatowanie może przywrócić już zaokrąglone cyfry?
Formatowanie nie odzyska cyfr zaokrąglonych lub usuniętych przed przekazaniem tekstu do narzędzia. Wróć do pierwotnego źródła i ponownie wyeksportuj pełną wartość. Gdy wartość jest identyfikatorem, a nie ilością, zapis jako ciąg znaków może pomóc aplikacjom odbierającym zachować wszystkie cyfry.
Opcjonalnie: porównanie przykładu i wyników referencyjnych
Te przykłady kodu i pliki do pobrania powstały z order-options.json przy użyciu tego samego narzędzia co na jego stronie. W sformatowanym i zwartym wyniku referencyjnym sortowanie kluczy jest wyłączone; posortowany wynik używa wcięć z dwóch spacji i włączonego sortowania.
Pierwotny przykład
{"order":"ORD-1042", "customer": {"name":"Zoë","city":"Bergen"}, "items":[{"sku":"CARD-02", "quantity":2,"price":19.50},{"sku":"BOX-01","quantity":1, "price":5.00}], "paid":true, "deliveryNote":null}
Dwie spacje; pierwotna kolejność kluczy
{
"order": "ORD-1042",
"customer": {
"name": "Zoë",
"city": "Bergen"
},
"items": [
{
"sku": "CARD-02",
"quantity": 2,
"price": 19.50
},
{
"sku": "BOX-01",
"quantity": 1,
"price": 5.00
}
],
"paid": true,
"deliveryNote": null
}Minifikuj; pierwotna kolejność kluczy
{"order":"ORD-1042","customer":{"name":"Zoë","city":"Bergen"},"items":[{"sku":"CARD-02","quantity":2,"price":19.50},{"sku":"BOX-01","quantity":1,"price":5.00}],"paid":true,"deliveryNote":null}Dwie spacje; posortowane klucze obiektów
{
"customer": {
"city": "Bergen",
"name": "Zoë"
},
"deliveryNote": null,
"items": [
{
"price": 19.50,
"quantity": 2,
"sku": "CARD-02"
},
{
"price": 5.00,
"quantity": 1,
"sku": "BOX-01"
}
],
"order": "ORD-1042",
"paid": true
}| Plik referencyjny | Ustawienia | Bajty |
|---|---|---|
| order-formatted.json | Dwie spacje; pierwotna kolejność kluczy | 300 |
| order-minified.json | Minifikuj; pierwotna kolejność kluczy | 193 |
| order-sorted.json | Dwie spacje; posortowane klucze obiektów | 300 |
To rzeczywiste wyniki tekstowe, a nie zrzuty interfejsu. Kod może zawijać się do szerokości ekranu. Nazwy plików referencyjnych rozróżniają przykłady; samo narzędzie pobiera każdą wersję jako formatted.json.