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

Bad control character in string literal in JSON at position N (line L column C)

Uma string do seu documento contém um caractere de controle literal: quase sempre uma quebra de linha de verdade, às vezes uma tabulação. Strings JSON não podem conter caracteres abaixo de U+0020 sem escape. Uma quebra de linha tem que ser escrita como \n, e uma tabulação como \t. A posição aponta para o caractere problemático.

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 Texto de várias linhas colado direto dentro de uma string

    SQL, HTML, um trecho de log ou uma mensagem de erro com quebras de linha reais dentro. Para o parser, a quebra de linha encerra a string.

    Quebra

    {
      "query": "SELECT *
    FROM users"
    }

    Funciona

    {
      "query": "SELECT *\nFROM users"
    }
  2. 02 JSON montado por concatenação de strings

    Esta é a causa raiz de quase todos os casos. JSON montado à mão não escapa os valores que você interpola nele. Serialize o objeto em vez disso e o problema não tem como acontecer.

    Quebra

    const body = '{"note": "' + note + '"}';

    Funciona

    const body = JSON.stringify({ note });
  3. 03 Uma tabulação que veio junto no copiar e colar

    Tabulações são invisíveis e caem dentro de strings com facilidade quando se copia de uma planilha ou de um terminal. Escape como \t, ou remova antes de montar o documento.

  4. 04 Fins de linha do Windows dentro de um valor

    Um retorno de carro, U+000D, também é caractere de controle. Texto lido de um arquivo do Windows e embutido em uma string carrega \r além de \n.

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 Invalid control character at: line 1 column 8 (char 7)
Java (Jackson) Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value

Perguntas frequentes

Quais caracteres precisam de escape?
Tudo de U+0000 até U+001F, mais as aspas duplas e a barra invertida. O JSON define escapes curtos para backspace, form feed, quebra de linha, retorno de carro e tabulação; qualquer outro nessa faixa precisa da forma \u, por exemplo \u0000.
Dá para fazer o parser aceitar esses caracteres?
O Jackson tem ALLOW_UNESCAPED_CONTROL_CHARS e alguns parsers têm chaves parecidas, mas isso esconde o problema em vez de resolver, e o documento continua inválido para todo outro consumidor. Escape no ponto em que o JSON é produzido.

Conserte agora

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

Reparar automaticamente