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