Unexpected end of JSON input
Der Parser erreichte das Ende der Eingabe, während er noch mehr erwartete. Entweder war die Zeichenkette von vornherein leer, oder ein Wert blieb offen und das Dokument war abgeschnitten. Beachten Sie: Diese Meldung trägt keine Position - genau das unterscheidet sie von den Fehlern, die eine haben.
Fügen Sie Ihr JSON ein und sehen Sie genau, wo es bricht
Nichts, was Sie einfügen, verlässt Ihren Browser. Die connect-src Erlaubnisliste macht daraus eine Garantie des Browsers statt eines Versprechens. Selbst überprüfen
Was es tatsächlich auslöst
Sortiert danach, wie oft sich das jeweilige als die Antwort herausstellt.
-
01 Die Zeichenkette ist leer
JSON.parse("") wirft das sofort. Eine leere Zeichenkette ist kein gültiges JSON. Das kommt meist von einem HTTP 204, von einer Antwort ohne Körper oder von einem localStorage-Schlüssel, der als leere Zeichenkette geschrieben wurde.
Geht kaputt
JSON.parse(localStorage.getItem('draft'))Funktioniert
const raw = localStorage.getItem('draft'); const draft = raw ? JSON.parse(raw) : null; -
02 Der Antwortkörper wurde bereits verbraucht
Der Körper eines Response lässt sich nur einmal lesen. res.text() und danach res.json() auf derselben Antwort aufzurufen liefert beim zweiten Mal eine leere Zeichenkette.
Geht kaputt
const text = await res.text(); const data = await res.json(); // body already usedFunktioniert
const text = await res.text(); const data = text ? JSON.parse(text) : null; -
03 Das Dokument ist abgeschnitten
Eine abgebrochene Verbindung, ein Limit für die Körpergröße (Express steht standardmäßig auf 100 kB), ein Stream-Lesevorgang, der zu früh endete, oder eine Datei, die während des Lesens geschrieben wurde. Endet die Eingabe mitten in einem Objekt, benennt unser Validator jede offen gebliebene Klammer und wo sie jeweils begann.
Geht kaputt
{"users": [{"id": 1}, {"id":Funktioniert
{"users": [{"id": 1}, {"id": 2}]} -
04 Der npm- oder yarn-Cache ist beschädigt
Ein großer Teil der Suchanfragen nach dieser Zeichenkette betrifft npm und nicht Anwendungscode. Eine unvollständig geschriebene Cache-Datei erzeugt beim Installieren denselben Fehler. Führen Sie npm cache clean --force aus, löschen Sie node_modules und package-lock.json und installieren Sie erneut.
-
05 Sie haben das Ergebnis einer Funktion geparst, die nichts zurückgab
JSON.parse(undefined) liefert eine andere Meldung ("undefined" is not valid JSON), aber eine Funktion, die eine leere Zeichenkette statt undefined zurückgibt, landet hier.
Derselbe Fehler in anderen Laufzeitumgebungen
Das zugrunde liegende Problem ist identisch; nur der Wortlaut unterscheidet sich. Meldet eine Kollegin eine dieser Zeilen, sieht sie genau dasselbe wie Sie.
| Python | Expecting value: line 1 column 1 (char 0) |
|---|---|
| Python, truncated object | Expecting ',' delimiter: line 1 column 28 (char 27) |
Häufige Fragen
- Warum stehen in dieser Meldung keine Zeile und Spalte?
- Weil es keine Position gibt, auf die man zeigen könnte. Der Fehler ist, dass die Eingabe zu Ende war, die schuldige Stelle ist also das Dokumentende. Unser Validator meldet das als Ende der Eingabe und listet auf, welche Klammern noch offen waren.
- Wirft JSON.parse(null) diesen Fehler?
- Nein. JSON.parse(null) wandelt null in die Zeichenkette "null" um und gibt null zurück, was viele überrascht. Es ist die leere Zeichenkette, die wirft.
Jetzt beheben
Fügen Sie das Payload in das Werkzeug oben ein, oder gehen Sie direkt zu dem, das für diesen Zweck gebaut wurde.
Die offene Klammer finden