Estoy tratando de usar org.apache.httpcomponentspara 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-charestá 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_CHARSquedó 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
\ntuvo 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í .