Estoy tratando de usar org.apache.httpcomponents
para consumir una API Rest, que publicará datos en formato JSON en la API.
Obtengo esta excepción:
Causado por: com.fasterxml.jackson.core.JsonParseException: carácter ilegal sin comillas ((CTRL-CHAR, código 10)): debe escaparse usando una barra invertida para ser incluido en la cadena.
El motivo es que ctrl-char
está incluido en la cadena JSON.
¿Hay alguna forma de reemplazar esta o alguna otra solución?
java
json
character-encoding
apache-httpclient-4.x
jian zhong
fuente
fuente
Respuestas:
Esto puede suceder si tiene una nueva línea (u otro carácter de control) en un literal de cadena JSON.
Si usted es el que produce los datos, reemplace las nuevas líneas reales con las de escape
"\\n"
al crear sus literales de cadena.fuente
Utilizando
Ver javadoc :
La opción anterior
JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS
quedó obsoleta desde la 2.10.Consulte también el hilo de github .
fuente
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="serializationInclusion" value="NON_NULL"/> </bean> </property> <property name="supportedMediaTypes" value="application/json"/> </bean> </mvc:message-converters> </mvc:annotation-driven>
. Estoy usando Jackson 2.7. y Spring4.3.2com.fasterxml.jackson.core.JsonParser.Feature;
En la plataforma Salesforce, este error es causado por
/
, la solución es escapar de estos como//
.fuente
\n
tuvo que cambiarse a\\n
. Esto se debe al hecho de que JSON requiere que se escapen los caracteres de control. Vea este excelente comentario aquí .