Ir para o conteúdo
jsonbeautifiers
Português
Java Texto da mensagem transcrito de ocorrências relatadas; não executado aqui.

Illegal unquoted character ((CTRL-CHAR, code 10))

Uma string do documento contém um caractere de controle literal. O código 10 é uma quebra de linha, o 13 um retorno de carro, o 9 uma tabulação. O JSON exige que sejam escapados, e o Jackson faz bem em rejeitá-los. É o mesmo problema de fundo que o V8 chama de "bad control character".

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 embutido em uma string

    SQL, stack traces, linhas de log e conteúdo de template carregam quebras de linha reais.

    Quebra

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

    Funciona

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

    Valores interpolados não são escapados. Serialize com ObjectMapper.writeValueAsString em vez de montar o texto à mão.

    Quebra

    String body = "{\"note\": \"" + note + "\"}";

    Funciona

    String body = mapper.writeValueAsString(Map.of("note", note));
  3. 03 Fins de linha do Windows dentro de um valor

    O retorno de carro, código 13, é um caractere de controle à parte e precisa de \r.

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) Bad control character in string literal in JSON at position 11 (line 1 column 12)
Python Invalid control character at: line 1 column 8 (char 7)

Perguntas frequentes

E o ALLOW_UNESCAPED_CONTROL_CHARS?
JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS faz o Jackson aceitá-los, e é um paliativo razoável quando você não consegue mudar quem produz. Isso não torna o documento JSON válido, então qualquer outra coisa que o consuma vai continuar falhando.

Conserte agora

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

Escapar o valor