Vai al contenuto
jsonbeautifiers
Italiano
Python Verificato eseguendo il parser su CPython 3.14.3.

Extra data: line L column C (char N)

json.loads ha analizzato un valore completo e poi ha trovato altro contenuto. Python lo chiama extra data. Se la riga segnalata è la 2 o una successiva e ogni riga sembra un record completo, il file è JSON Lines e va letto una riga alla volta.

Incolla il tuo JSON e vedi esattamente dove si rompe

Input

Nulla di ciò che incolli lascia il tuo browser. L’allowlist connect-src ne fa una garanzia del browser anziché una promessa. Verificalo tu stesso

Che cosa lo provoca davvero

In ordine di quanto spesso ciascuno si rivela essere la risposta.

  1. 01 Il file è JSON Lines

    Un oggetto JSON per riga, senza virgole, senza array che li racchiude. È il formato di output standard di log, esportazioni BigQuery e API in streaming.

    Si rompe

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

    Funziona

    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 è stato chiamato in un ciclo, accodando allo stesso file

    Ogni chiamata scrive un documento completo, quindi il file finisce per contenerne parecchi. O scrivi JSON Lines di proposito e lo leggi come tale, oppure raccogli i record in una lista e fai un solo dump.

    Si rompe

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

    Funziona

    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 Due risposte concatenate

    Un nuovo tentativo che ha accodato a un buffer invece di sostituirlo.

Lo stesso errore in altri runtime

Il problema di fondo è identico; cambia solo la formulazione. Se un collega segnala uno di questi messaggi, sta guardando esattamente la stessa cosa che vedi tu.

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

Domande frequenti

Esiste una funzione Python che legga più documenti dalla stessa stringa?
json.JSONDecoder().raw_decode(s, idx) analizza un valore e ti dice dove si è fermato, così puoi ciclare. Per file delimitati da righe, spezzare sugli a capo è più semplice e molto più veloce.
Perché l’offset char non corrisponde alla mia riga e colonna?
char è l’indice assoluto nella stringa, mentre riga e colonna sono la posizione leggibile da una persona. Descrivono lo stesso punto.

Risolvilo adesso

Incolla il payload nello strumento qui sopra, oppure vai direttamente a quello creato per questo compito.

Converti JSON Lines in un array