Zum Inhalt springen
jsonbeautifiers
Deutsch
Python Überprüft durch Ausführen des Parsers auf CPython 3.14.3.

Extra data: line L column C (char N)

json.loads hat einen vollständigen Wert geparst und danach weiteren Inhalt gefunden. Python nennt das Extra data. Ist die gemeldete Zeile 2 oder höher und sieht jede Zeile wie ein vollständiger Datensatz aus, ist die Datei JSON Lines und muss Zeile für Zeile gelesen werden.

Fügen Sie Ihr JSON ein und sehen Sie genau, wo es bricht

Eingabe

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.

  1. 01 Die Datei ist JSON Lines

    Ein JSON-Objekt pro Zeile, keine Kommas, kein umschließendes Array. Das Standardausgabeformat für Logs, BigQuery-Exporte und streamende APIs.

    Geht kaputt

    with open('events.jsonl') as f:
        data = json.load(f)   # Extra data: line 2 column 1

    Funktioniert

    with open('events.jsonl') as f:
        data = [json.loads(line) for line in f if line.strip()]
    
    # or, with pandas
    import pandas as pd
    df = pd.read_json('events.jsonl', lines=True)
  2. 02 json.dumps wurde in einer Schleife aufgerufen und an dieselbe Datei angehängt

    Jeder Aufruf schreibt ein vollständiges Dokument, sodass die Datei am Ende mehrere enthält. Entweder Sie schreiben absichtlich JSON Lines und lesen es auch so, oder Sie sammeln die Datensätze in einer Liste und schreiben sie einmal heraus.

    Geht kaputt

    for row in rows:
        f.write(json.dumps(row))

    Funktioniert

    for row in rows:
        f.write(json.dumps(row) + '\n')   # NDJSON, read line by line
    
    # or
    f.write(json.dumps(rows))              # one array
  3. 03 Zwei aneinandergehängte Antworten

    Ein Wiederholungsversuch, der an einen Puffer angehängt statt ihn ersetzt hat.

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.

JavaScript (V8) Unexpected non-whitespace character after JSON at position 8 (line 2 column 1)

Häufige Fragen

Gibt es eine Python-Funktion, die mehrere Dokumente aus einer Zeichenkette liest?
json.JSONDecoder().raw_decode(s, idx) parst einen Wert und sagt Ihnen, wo er aufgehört hat, sodass Sie in einer Schleife weitermachen können. Bei zeilengetrennten Dateien ist das Aufteilen an Zeilenumbrüchen einfacher und viel schneller.
Warum passt der char-Offset nicht zu meiner Zeile und Spalte?
char ist der absolute Index in die Zeichenkette, während Zeile und Spalte die für Menschen lesbare Position sind. Beide beschreiben denselben Punkt.

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.

JSON Lines in ein Array umwandeln