Heim >Backend-Entwicklung >Python-Tutorial >Warum erhalte ich „ValueError: Extra Data', wenn ich Pythons json.loads verwende?

Warum erhalte ich „ValueError: Extra Data', wenn ich Pythons json.loads verwende?

Linda Hamilton
Linda HamiltonOriginal
2024-11-16 09:07:02800Durchsuche

Why Am I Getting

Fehler: „ValueError: Extra data“ bei Verwendung von Pythons json.loads

Bei Verwendung von Pythons json.loads-Funktion zum Parsen einer JSON-Datei , kann es zu folgendem Fehler kommen:

ValueError: Extra data: line 88 column 2 - line 50607 column 2 (char 3077 - 1868399)

Dieser Fehler weist darauf hin, dass zusätzliche Daten vorhanden sind in der JSON-Datei, die nicht Teil einer gültigen JSON-Struktur ist.

Ursache

Der Fehler tritt normalerweise auf, wenn die JSON-Datei mehr als ein JSON-Objekt pro Zeile enthält. json.loads erwartet ein einzelnes JSON-Objekt als Eingabe, aber wenn nach dem ersten Objekt zusätzlicher Inhalt vorhanden ist, wird der Fehler „zusätzliche Daten“ ausgelöst.

Beispiel-JSON

Betrachten Sie zum Beispiel diese Beispiel-JSON-Datei:

{"id": 123, "name": "John"}
{
    "id": 456,
    "name": "Jane"
}

Diese Datei enthält zwei JSON-Objekte, aber jedes Objekt befindet sich nicht in einer separaten Zeile. Wenn json.loads auf das erste Objekt trifft, versucht es, es zu analysieren und den Fehler auszulösen, wenn es das zweite Objekt erreicht.

Lösung

Die Lösung für diesen Fehler soll sicherstellen, dass sich jedes JSON-Objekt in einer eigenen Zeile in der Datei befindet. Dies kann durch manuelles Bearbeiten der Datei oder durch die Verwendung eines Tools zum Neuformatieren des JSON erfolgen.

Iteratives Parsen

Wenn die JSON-Datei groß ist und viele JSON-Objekte enthält , Sie können auch einen iterativen Ansatz verwenden, um die Datei zu analysieren, ohne die gesamte Datei in den Speicher zu laden.

import json

tweets = []
with open('tweets.json', 'r') as file:
    for line in file:
        tweets.append(json.loads(line))

Bei diesem Ansatz wird die Die Datei wird Zeile für Zeile iteriert und jede Zeile wird als JSON-Objekt analysiert. Dadurch wird das Speichern von Python-Zwischenobjekten vermieden und ist bei großen Dateien effizienter.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich „ValueError: Extra Data', wenn ich Pythons json.loads verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn