Ir para o conteúdo
jsonbeautifiers
Português
V8 Verificado rodando o parser em Node v24.15.0, V8 13.6.233.17.

Unexpected end of JSON input

O parser chegou ao fim da entrada enquanto ainda esperava mais. Ou a string estava vazia desde o começo, ou um valor ficou aberto e o documento estava truncado. Repare que esta mensagem não traz posição, e é justamente isso que a distingue dos erros que trazem.

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 A string está vazia

    JSON.parse("") lança isso na hora. Uma string vazia não é JSON válido. Normalmente vem de um HTTP 204, de uma resposta sem corpo, ou de uma chave do localStorage gravada como string vazia.

    Quebra

    JSON.parse(localStorage.getItem('draft'))

    Funciona

    const raw = localStorage.getItem('draft');
    const draft = raw ? JSON.parse(raw) : null;
  2. 02 O corpo da resposta já tinha sido consumido

    O corpo de um Response só pode ser lido uma vez. Chamar res.text() e depois res.json() na mesma resposta devolve string vazia na segunda vez.

    Quebra

    const text = await res.text();
    const data = await res.json();   // body already used

    Funciona

    const text = await res.text();
    const data = text ? JSON.parse(text) : null;
  3. 03 O documento está truncado

    Uma conexão caída, um limite de tamanho de corpo (o Express usa 100 kB por padrão), uma leitura de stream que terminou cedo demais, ou um arquivo escrito enquanto era lido. Se a entrada acaba no meio de um objeto, o nosso validador aponta cada colchete que ficou aberto e onde cada um começou.

    Quebra

    {"users": [{"id": 1}, {"id":

    Funciona

    {"users": [{"id": 1}, {"id": 2}]}
  4. 04 O cache do npm ou do yarn está corrompido

    Boa parte das buscas por essa string é sobre npm e não sobre código de aplicação. Um arquivo de cache escrito pela metade produz o mesmo erro durante a instalação. Rode npm cache clean --force, apague node_modules e package-lock.json, e instale de novo.

  5. 05 Você parseou o retorno de uma função que não devolveu nada

    JSON.parse(undefined) dá outra mensagem ("undefined" is not valid JSON), mas uma função que devolve string vazia em vez de undefined cai aqui.

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ê.

Python Expecting value: line 1 column 1 (char 0)
Python, truncated object Expecting ',' delimiter: line 1 column 28 (char 27)

Perguntas frequentes

Por que esta mensagem não tem linha nem coluna?
Porque não há posição para apontar. A falha é que a entrada acabou, então o lugar problemático é o fim do documento. O nosso validador reporta isso como fim da entrada e lista quais colchetes ainda estavam abertos.
JSON.parse(null) lança isso?
Não. JSON.parse(null) converte null para a string "null" e devolve null, o que surpreende bastante gente. Quem lança é a string vazia.

Conserte agora

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

Achar o colchete não fechado