Aller au contenu
jsonbeautifiers
Français
Python Vérifié en exécutant l’analyseur sur CPython 3.14.3.

Extra data: line L column C (char N)

json.loads a analysé une valeur complète puis a trouvé du contenu supplémentaire. Python appelle cela « extra data ». Si la ligne signalée est la 2 ou une suivante et que chaque ligne ressemble à un enregistrement complet, le fichier est du JSON Lines et doit être lu une ligne à la fois.

Collez votre JSON et voyez exactement où il casse

Entrée

Rien de ce que vous collez ne quitte votre navigateur. La liste d’autorisation connect-src en fait une garantie du navigateur plutôt qu’une promesse. Vérifiez-le vous-même

Ce qui le provoque réellement

Classés selon la fréquence à laquelle chacun se révèle être la réponse.

  1. 01 Le fichier est du JSON Lines

    Un objet JSON par ligne, sans virgules, sans tableau englobant. C’est le format de sortie standard des journaux, des exports BigQuery et des API en flux.

    Casse

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

    Fonctionne

    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 a été appelé dans une boucle, en ajoutant au même fichier

    Chaque appel écrit un document complet, si bien que le fichier finit par en contenir plusieurs. Soit vous écrivez du JSON Lines délibérément et le lisez comme tel, soit vous rassemblez les enregistrements dans une liste et faites un seul dump.

    Casse

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

    Fonctionne

    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 Deux réponses concaténées

    Une nouvelle tentative qui a ajouté à un tampon au lieu de le remplacer.

La même erreur dans d’autres environnements

Le problème de fond est identique ; seule la formulation change. Si un collègue signale l’un de ces messages, il regarde exactement la même chose que vous.

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

Questions fréquentes

Existe-t-il une fonction Python qui lise plusieurs documents dans une même chaîne ?
json.JSONDecoder().raw_decode(s, idx) analyse une valeur et vous indique où elle s’est arrêtée, ce qui permet de boucler. Pour des fichiers délimités par des lignes, découper sur les sauts de ligne est plus simple et bien plus rapide.
Pourquoi le décalage char ne correspond-il pas à mes ligne et colonne ?
char est l’indice absolu dans la chaîne, tandis que ligne et colonne donnent la position lisible par un humain. Les deux décrivent le même point.

Corrigez-le maintenant

Collez le payload dans l’outil ci-dessus, ou allez directement à celui conçu pour ce travail.

Convertir du JSON Lines en tableau