Wszystkie poradniki

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

  1. Otwórz Formatowanie i walidacja JSON. Użyj Plik, aby otworzyć dostarczony plik order-options.json, lub wklej jego zawartość do Twoje dane.
  2. Ustaw Wcięcie na 2, aby użyć dwóch spacji na poziom. Przy pierwszym przetwarzaniu pozostaw Sortuj klucze obiektów niezaznaczone.
  3. 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.
  4. 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.
  5. Wybierz Pobierz wynik, aby zapisać formatted.json. Możesz też użyć Kopiuj tekst, aby przenieść wynik do innego edytora.
  6. 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ęć

OpcjaDziałanie
2Używa dwóch spacji na każdy poziom zagnieżdżenia. To ustawienie z głównej instrukcji.
4Uż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.
MinifikujUsuwa 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ść.

  1. Pozostaw Wcięcie ustawione na 2, zaznacz Sortuj klucze obiektów i wybierz Przetwórz dane.
  2. 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.
  3. 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

OpcjaDziałanie
Kopiuj tekstKopiuje 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 wynikZapisuje 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 wynikiOtwiera okno drukowania przeglądarki dla tekstu wyniku.
Wczytaj przykładZastę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ń wszystkoUsuwa 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 referencyjnyUstawieniaBajty
order-formatted.jsonDwie spacje; pierwotna kolejność kluczy300
order-minified.jsonMinifikuj; pierwotna kolejność kluczy193
order-sorted.jsonDwie spacje; posortowane klucze obiektów300

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.

Powiązane narzędzia

Źródła

RFC 8259 · JSON