java - JsonparseException Caracteres não citados ilegais((CTRL-CHAR, código 10)




character-encoding apache-httpclient-4.x (3)

Estou tentando usar org.apache.httpcomponents para consumir uma API restante, que postará dados de formato json na API.

enquanto eu recebo exceção

Causado por: com.fasterxml.jackson.core.JsonParseException: Caractere não citado ilegal ((CTRL-CHAR, código 10)): deve ser escapado usando a barra invertida para ser incluído na string.

O motivo é que ctrl-char está incluído na string json.

Existe alguma maneira de substituir esse. Ou alguma outra solução?

obrigado!


Eu recomendo que você use um editor de texto como o Vim para descobrir se existem caracteres especiais ou de escape (invisíveis) causando esse problema.

Ou, se você estiver usando o Windows, é até simples ... basta copiar e colar o código no bloco de notas do Windows e provavelmente mostrará caracteres de escape indesejados ou quebras de linha invisíveis etc. corrija-os e pronto!


Isso pode acontecer se você tiver uma nova linha (ou outro caractere de controle) em uma literal de string JSON.

{"foo": "bar
baz"}

Se você produz os dados, substitua as novas linhas reais por "\\n" escape ao criar literais de seqüência de caracteres.

{"foo": "bar\nbaz"}

Usando

mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);

Veja javadoc :

 /**
   * Feature that determines whether parser will allow
   * JSON Strings to contain unquoted control characters
   * (ASCII characters with value less than 32, including
   * tab and line feed characters) or not.
   * If feature is set false, an exception is thrown if such a
   * character is encountered.
   *<p>
   * Since JSON specification requires quoting for all control characters,
   * this is a non-standard feature, and as such disabled by default.
   */




apache-httpclient-4.x