fixmint
PL

Najczęstsze błędy w JSON, które powodują błędy parsowania, i jak je naprawić

Autor: · · zaktualizowano 8 listopada 2026 · czas czytania: 5 min

Większość błędów parsowania JSON wynika z krótkiej listy pomyłek: przecinka za ostatnim elementem, ciągu znaków w pojedynczych cudzysłowach, komentarza, klucza bez cudzysłowów, wartości takiej jak NaN lub undefined albo typograficznych cudzysłowów skopiowanych z dokumentu. JSON jest surowszy niż przypominający go JavaScript, więc kod, który dla człowieka wygląda poprawnie, może zostać odrzucony przez parser. Komunikat o błędzie wskazuje wiersz i kolumnę, a poprawka zwykle znajduje się w tym miejscu lub tuż przed nim.

Formatuj JSONJSON nie daje się odczytaćZrób to za darmo

Zasady, których wymaga JSON

Dokument JSON to jedna wartość: obiekt w nawiasach klamrowych, tablica w nawiasach kwadratowych, ciąg znaków, liczba, true, false lub null. Wewnątrz tych wartości:

  • Każdy klucz i każdy ciąg znaków używa prostych cudzysłowów, np. "name".
  • Przecinki oddzielają elementy, a za ostatnim elementem obiektu lub tablicy nie może być przecinka.
  • Liczby nie mogą zaczynać się od znaku plus, a NaN, Infinity i undefined nie są prawidłowymi liczbami ani wartościami.
  • Komentarze są w ogóle niedozwolone.
  • Kluczami muszą być ciągi znaków, więc klucz bez cudzysłowów, np. name:, jest błędny.

Niektóre parsery akceptują część z tych rzeczy domyślnie, a niektóre narzędzia przyjmują JSON z komentarzami dla wygody. Ta pobłażliwość ukrywa problem, dopóki plik nie trafi do bardziej rygorystycznego odbiorcy, dlatego pisz wersję zgodną ze ścisłym standardem.

Czytanie komunikatu o błędzie

Parsery zgłaszają miejsce, w którym nie mogły dalej przetwarzać danych. Komunikat podaje problem i pozycję, zwykle wiersz i kolumnę. Oto mały plik z przecinkiem na końcu tablicy i kolejnym po ostatniej właściwości:

{
  "name": "Ada",
  "tags": ["a", "b",],
}

Python zgłasza to jako: "Illegal trailing comma before end of array: line 3 column 20". Treść różni się między narzędziami, a niektóre starsze parsery podają tylko „Unexpected token” z przesunięciem znaku. Przejdź do wskazanego miejsca, a potem sprawdź znak tuż przed nim. Prawdziwa pomyłka to często przecinek, cudzysłów lub nawias jeden albo dwa znaki wcześniej.

Kilka innych komunikatów z parsera Pythona i ich zwykłe znaczenie:

  • "Expecting property name enclosed in double quotes" dla '{'a': 1}' oznacza klucz w pojedynczych cudzysłowach albo klucz bez cudzysłowów.
  • "Expecting value" w miejscu, gdzie oczekiwano liczby lub ciągu znaków, często oznacza typograficzny cudzysłów, ponieważ parser traktuje go jako nieznany znak.
  • "Expecting ',' delimiter" zwykle oznacza brakujący przecinek między dwoma elementami albo komentarz w środku danych.

Typograficzne cudzysłowy i skopiowany tekst

Typograficzne cudzysłowy są najbardziej mylącym przypadkiem, bo wyglądają prawie tak samo jak proste. Plik JSON skopiowany z edytora tekstu, strony internetowej lub wiadomości w komunikatorze może zawierać zaokrąglone podwójne cudzysłowy. Plik wygląda dla ciebie poprawnie, a parsowanie się nie udaje, bo parser widzi „x” jako nieznany znak, a nie jako ogranicznik ciągu znaków.

Ukryte znaki powodują podobny błąd. Spacja niełamiąca między dwiema wartościami nie jest dla parsera zwykłym odstępem. Zanim zaczniesz ręcznie naprawiać strukturę, Usuwanie ukrytych znaków, a potem popraw cudzysłowy. Z poradnika o cudzysłowach typograficznych dowiesz się, jak bezpiecznie je wyprostować.

Pojedyncze cudzysłowy, komentarze i klucze bez cudzysłowów

Wielu programistów zapisuje dane podobne do JSON w języku, który dopuszcza więcej:

  • Pojedyncze cudzysłowy są poprawne w literałach JavaScriptu i Pythona, ale JSON wymaga podwójnych. Zamień {'a': 1} na {"a": 1}.
  • Komentarze, takie jak // czy /* */, trzeba usunąć. Jeśli potrzebujesz notatek, umieść je w osobnym polu albo użyj formatu przeznaczonego do plików konfiguracyjnych.
  • Klucze bez cudzysłowów są częste w literałach obiektów JavaScriptu. Dodaj cudzysłowy.
  • NaN i undefined nie należą do JSON. Użyj null dla brakującej wartości albo ciągu znaków, jeśli wartość jest tekstem.

Uważaj przy globalnym zamienianiu. Zmiana każdego pojedynczego cudzysłowu na podwójny zepsuje każdy ciąg zawierający apostrof, np. "Ada's notes". Najpierw sprawdź każde dopasowanie w Znajdź i zamień, żeby zobaczyć, które cudzysłowy zostaną zmienione.

Napraw strukturę krok po kroku

  1. Wklej plik do Formatuj JSON. Formatowanie uwidacznia strukturę, a błąd pokazuje wiersz i kolumnę. Następnie naciśnij Napraw, co usuwa komentarze i przecinki na końcu. Nie zmienia pojedynczych ani typograficznych cudzysłowów, więc te poprawiasz samodzielnie.
  2. Najpierw popraw tylko pierwszy błąd, a potem sprawdź ponownie. Jedna pomyłka może wygenerować kilka błędów dalej w pliku.
  3. Upewnij się, że każdy otwierający nawias klamrowy lub kwadratowy ma zamykający i że zagnieżdżenie jest takie, jakie zamierzałeś.
  4. Sprawdź gotowy plik parserem, którego używa twoja aplikacja, a nie tylko narzędziem w przeglądarce. Parsery nieznacznie się różnią.

Plik, który się parsuje, nie zawsze jest tym, czego chciałeś. Sprawdź go według JSON Schema, aby wychwycić brakujące pole lub wartość złego typu, albo porównaj dwa dokumenty JSON, żeby zobaczyć, co zmieniło się między wersjami.

Przypadki szczególne

  • Przecinki na końcu w wygenerowanych plikach. Niektóre narzędzia je zapisują. Jeśli tworzysz JSON, składając ciągi znaków ręcznie, użyj serializatora swojego języka, który generuje poprawne dane.
  • Zduplikowane klucze. JSON je dopuszcza, ale większość parserów zachowuje tylko ostatnią wartość. Zduplikowane klucze to błąd, który tylko czeka, by sprawić kłopot.
  • Duże liczby. Bardzo duże liczby całkowite mogą tracić precyzję w niektórych parserach, więc jeśli identyfikator jest dłuższy, niż parser potrafi dokładnie przedstawić, zapisuj go jako ciąg znaków. Poradnik o zamianie CSV na JSON mówi to samo o identyfikatorach.

Szybkie odpowiedzi

Dlaczego mój JSON nie działa, skoro wygląda poprawnie?

Najczęstsze przyczyny to przecinek na końcu, pojedyncze cudzysłowy, komentarz albo typograficzne cudzysłowy skopiowane z dokumentu. Sprawdź pozycję w komunikacie o błędzie i znak tuż przed nią.

Czy JSON może zawierać komentarze?

Nie. Standard JSON nie dopuszcza komentarzy. Usuń je albo przenieś notatki do osobnego pola. Przycisk Napraw w formaterze usunie je za ciebie.

Czego użyć zamiast undefined w JSON?

Użyj null, gdy wartość celowo brakuje, albo pomiń klucz całkowicie. undefined to wartość JavaScriptu i nie ma reprezentacji w JSON.

Przetłumaczone z Wersja angielska przy wsparciu AI.

Komentarze

    Brak komentarzy. Bądź pierwszy.

    Twoja ocena (opcjonalnie)

    Twój e-mail nigdy nie jest pokazywany ani zapisywany.

    Okładka: How to Remain Valuable When Intelligence Becomes CheapHow to Remain Valuable When Intelligence Becomes Cheap

    224 strony o przewagach człowieka: ekonomicznych i strategicznych, które pozostają rzadkie, gdy AI potrafi wykonać większość pracy umysłowej.

    $3.84Kup na GumroadPo angielsku