Walidator JSON

Wklej dowolny dokument JSON i sprawdź, czy parsuje się czysto względem RFC 8259. Niepoprawne dane wracają z dokładnym problemem, przecinek po ostatnim elemencie tablicy, klucz bez cudzysłowów, niezakończony ciąg znaków, pojedyncze cudzysłowy tam, gdzie JSON wymaga podwójnych, błędne sekwencje ucieczki, wraz z linią i kolumną, w której parser się poddał. Przydatne przy debugowaniu odpowiedzi API, pliku konfiguracyjnego, package.json ręcznie edytowanego przez kolegę z zespołu albo wyniku generatora kodu.

Jak działa walidacja JSON

  1. 1

    Wklej swój JSON

    Wrzuć ładunek, plik konfiguracyjny albo odpowiedź API. Białe znaki nie przeszkadzają; tabulatory i komentarze tak (czysty JSON nie ma komentarzy).

  2. 2

    Parsuj ścisłym parserem RFC 8259

    Walidator odrzuca wszystko, czego zabrania specyfikacja: przecinki na końcu, klucze bez cudzysłowów, pojedyncze cudzysłowy, `undefined`, liczby szesnastkowe.

  3. 3

    Przeczytaj błąd

    Jeśli walidacja się nie powiedzie, otrzymasz komunikat parsera plus przybliżoną lokalizację: wystarczająco, aby przejść prosto do znaku.

  4. 4

    Popraw i zwaliduj ponownie

    Skoryguj problem, wklej ponownie i potwierdź, że dokument jest poprawny przed commitem lub wysłaniem.

Co dopuszcza ścisły JSON, a czego nie

Krąży mnóstwo formatów „prawie JSON“ (JSON5, JSONC, HJSON, hybrydy w stylu YAML). Sama specyfikacja JSON jest mała i ścisła; ten walidator mówi, czy twój dokument przetrwa ścisły parser, a właśnie ten uruchamia większość systemów po stronie odbiorcy.

Reguły, które wpędzają większość ludzi w kłopoty

Reguła Poprawne Niepoprawne
Klucze muszą być ciągami w podwójnych cudzysłowach {"a": 1} {a: 1}
Ciągi używają tylko podwójnych cudzysłowów "hello" 'hello'
Bez przecinków na końcu [1, 2, 3] [1, 2, 3,]
Bez komentarzy (brak) // komentarz lub /* */
Liczby: bez wiodącego +, bez .5 0.5 +1, .5
Tylko zarezerwowane literały true, false, null undefined, NaN
Kodowanie UTF-8 Ciągi Unicode Niepoprawne sekwencje bajtów

Częste błędy i co oznaczają

  • „Unexpected token }, masz przecinek na końcu przed zamykającym nawiasem klamrowym.
  • „Expected property name“, klucz jest bez cudzysłowów albo zapomniałeś cudzysłowów wokół klucza otwierającego.
  • „Unexpected end of input“, otwierający { lub [ nie jest zamknięty; policz nawiasy.
  • „Bad control character“, tabulator, znak nowej linii lub inny bajt sterujący wewnątrz literału ciągu. Zapisz je jako \t, \n itd.
  • „Duplicate key“, w istocie nie jest to błąd specyfikacji JSON (specyfikacja mówi, że klucze POWINNY być unikalne), ale wiele walidatorów ostrzega. Walidator oznacza to jako uwagę, nie twardy błąd.

Jeśli potrzebujesz luźniejszych formatów

  • JSON5 dopuszcza przecinki na końcu, komentarze i pojedyncze cudzysłowy. Użyj parsera JSON5, jeśli to twój docelowy format.
  • JSONC (JSON z komentarzami) jest tym, czego używają ustawienia VS Code. Usuń komentarze przed ścisłym parsowaniem.
  • YAML to inny format; nie zakładaj, że to „tylko wcięty JSON“.

Wskazówki

  • Waliduj przed commitem. Literówka w package.json lub konfiguracji CI psuje cały build, dopóki ktoś tego nie zauważy.
  • Formatuj ładnie po walidacji, aby diffy w review były czytelne. Jednoliniowy plik JSON jest poprawny, ale fatalny do przeglądania.
  • Przy dużych ładunkach waliduj strumieniowo (np. jq w wierszu poleceń). Parsowanie w przeglądarce ma problemy powyżej kilku MB.

Najczęściej zadawane pytania

To narzędzie sprawdza tylko poprawność składniową, czy to dobrze sformułowany JSON? Dla reguł strukturalnych (wymagane pola, wartości enum, długości ciągów) użyj walidatora JSON Schema. Te dwa kroki się uzupełniają: nie ma sensu uruchamiać walidacji schematu na dokumencie, który w ogóle nie jest poprawnym JSON-em.

Ponieważ standardowy JSON nie ma komentarzy. // i /* */ to rozsądne rozszerzenie (JSONC, JSON5), ale czysty JSON je odrzuca. Usuń komentarze przed wysłaniem do ścisłego odbiorcy albo przyjmij JSON5 w całym swoim stosie.

Niepoprawne w ścisłym JSON. Specyfikacja dopuszcza tylko liczby skończone. Serializuj je jako ciągi ("NaN", "Infinity") albo jako null, w zależności od tego, jak twój odbiorca obsługuje brakujące dane.

Nie, walidacja działa w twojej przeglądarce, więc wklejony ładunek nigdy nie opuszcza strony. Bezpieczne dla wrażliwych plików konfiguracyjnych i odpowiedzi API z danymi uwierzytelniającymi.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach