Ir para o conteúdo
jsonbeautifiers
Português
Python Verificado rodando o parser em CPython 3.14.3.

Extra data: line L column C (char N)

O json.loads parseou um valor completo e depois encontrou mais conteúdo. O Python chama isso de extra data. Se a linha reportada é a 2 ou posterior e cada linha parece um registro completo, o arquivo é JSON Lines e precisa ser lido uma linha por vez.

Cole o seu JSON e veja exatamente onde ele quebra

Entrada

Nada do que você cola sai do seu navegador. A lista de permissões connect-src transforma isso em uma garantia do navegador, e não em uma promessa. Confira você mesmo

O que realmente causa isso

Ordenados por quantas vezes cada um acaba sendo a resposta.

  1. 01 O arquivo é JSON Lines

    Um objeto JSON por linha, sem vírgulas, sem array envolvendo. É o formato de saída padrão de logs, exportações do BigQuery e APIs em streaming.

    Quebra

    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 json.dumps foi chamado dentro de um laço, acrescentando ao mesmo arquivo

    Cada chamada escreve um documento completo, então o arquivo acaba guardando vários. Ou você escreve JSON Lines de propósito e lê como tal, ou junta os registros em uma lista e faz um dump só.

    Quebra

    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 Duas respostas concatenadas

    Uma nova tentativa que acrescentou a um buffer em vez de substituí-lo.

O mesmo erro em outros runtimes

O problema de fundo é idêntico; só muda a redação. Se um colega reportar uma dessas mensagens, ele está olhando exatamente para a mesma coisa que você.

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

Perguntas frequentes

Existe alguma função do Python que leia vários documentos de uma mesma string?
json.JSONDecoder().raw_decode(s, idx) parseia um valor e te diz onde parou, então dá para iterar. Para arquivos delimitados por linhas, separar pelas quebras de linha é mais simples e bem mais rápido.
Por que o deslocamento char não bate com a minha linha e coluna?
char é o índice absoluto dentro da string, enquanto linha e coluna são a posição legível por gente. Os dois descrevem o mesmo ponto.

Conserte agora

Cole o payload na ferramenta acima, ou vá direto para a que foi feita para este trabalho.

Converter JSON Lines em um array