Saltar al contenido
jsonbeautifiers
Español
Python Verificado ejecutando el parser en CPython 3.14.3.

Extra data: line L column C (char N)

json.loads parseó un valor completo y después encontró más contenido. Python llama a eso «extra data». Si la línea reportada es la 2 o posterior y cada línea parece un registro completo, el archivo es JSON Lines y hay que leerlo de línea en línea.

Pega tu JSON y ve exactamente dónde se rompe

Entrada

Nada de lo que pegues sale de tu navegador. La lista de permitidos de connect-src convierte eso en una garantía del navegador, no en una promesa. Compruébalo tú mismo

Qué lo provoca realmente

Ordenados por la frecuencia con la que cada uno acaba siendo la respuesta.

  1. 01 El archivo es JSON Lines

    Un objeto JSON por línea, sin comas y sin array envolvente. Es el formato de salida estándar de los logs, de las exportaciones de BigQuery y de las APIs en streaming.

    Falla

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

    Funciona

    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 Se llamó a json.dumps dentro de un bucle, añadiendo a un mismo archivo

    Cada llamada escribe un documento completo, así que el archivo acaba conteniendo varios. O escribes JSON Lines a propósito y lo lees como tal, o recoges los registros en una lista y haces un único dump.

    Falla

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

    Funciona

    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 Dos respuestas concatenadas

    Un reintento que añadió a un buffer en vez de reemplazarlo.

El mismo error en otros entornos

El problema de fondo es idéntico; solo cambia la redacción. Si un compañero reporta alguno de estos, está mirando exactamente lo mismo que tú.

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

Preguntas frecuentes

¿Hay alguna función de Python que lea varios documentos de una misma cadena?
json.JSONDecoder().raw_decode(s, idx) parsea un valor y te dice dónde se detuvo, así que puedes iterar. Para archivos delimitados por líneas, partir por saltos de línea es más simple y mucho más rápido.
¿Por qué el desplazamiento char no coincide con mi línea y columna?
char es el índice absoluto dentro de la cadena, mientras que línea y columna son la posición legible por humanos. Describen el mismo punto.

Arréglalo ahora

Pega el payload en la herramienta de arriba, o ve directamente a la creada para este trabajo.

Convertir JSON Lines en un array