java json character-encoding apache-httpclient-4.x

java - JsonparseException Carácter no entrecomillado ilegal((CTRL-CHAR, código 10)



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

Estoy tratando de usar org.apache.httpcomponents para consumir una API de descanso, que publicará datos en formato json en la API.

mientras tengo la excepción

Causado por: com.fasterxml.jackson.core.JsonParseException: Carácter no entrecomillado ilegal ((CTRL-CHAR, código 10)): debe escaparse mediante la barra diagonal inversa para incluirse en la cadena.

La razón es que ctrl-char está incluido en la cadena json.

¿Hay alguna forma de reemplazar esto o alguna otra solución?

¡Gracias!


En la plataforma Salesforce, este error es causado por / , la solución es escapar de estos como // .


Esto puede suceder si tiene una nueva línea (u otro carácter de control) en un literal de cadena JSON.

{"foo": "bar baz"}

Si usted es el que produce los datos, reemplace las nuevas líneas reales con las que escapan "//n" al crear sus literales de cadena.

{"foo": "bar/nbaz"}


Le recomiendo que use un editor de texto como Vim para encontrar si hay caracteres especiales (invisibles) o de escape que causen este problema.

O si está utilizando Windows, es incluso simple ... simplemente copie y pegue el código en el bloc de notas de Windows, y lo más probable es que muestre cualquier carácter de escape invisible no deseado o saltos de línea, etc. ¡arréglelo y listo!


Utilizando

mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);

Ver 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. */