Ich versuche, org.apache.httpcomponents
eine Rest-API zu verwenden, die Daten im JSON-Format an die API sendet.
Ich bekomme diese Ausnahme:
Auslöser: com.fasterxml.jackson.core.JsonParseException: Unzulässiges Zeichen ohne Anführungszeichen ((STRG-CHAR, Code 10)): muss mit einem Backslash maskiert werden, um in die Zeichenfolge aufgenommen zu werden.
Der Grund dafür ist, dass ctrl-char
in der JSON-Zeichenfolge enthalten ist.
Gibt es eine Möglichkeit, diese oder eine andere Lösung zu ersetzen?
java
json
character-encoding
apache-httpclient-4.x
Jian Zhong
quelle
quelle
Antworten:
Dies kann passieren, wenn Sie eine neue Zeile (oder ein anderes Steuerzeichen) in einem JSON-Zeichenfolgenliteral haben.
Wenn Sie die Daten erstellen, ersetzen Sie
"\\n"
beim Erstellen Ihrer Zeichenfolgenliterale die tatsächlichen Zeilenumbrüche durch maskierte Zeilenumbrüche .quelle
Verwenden von
Siehe javadoc :
Die alte Option
JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS
war seit 2.10 veraltet.Siehe auch Github-Thread .
quelle
<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>
. Ich benutze Jackson 2.7. und Spring4.3.2com.fasterxml.jackson.core.JsonParser.Feature;
Auf der Salesforce-Plattform wird dieser Fehler durch verursacht
/
. Die Lösung besteht darin, diese als zu umgehen//
.quelle
\n
musste geändert werden auf\\n
. Dies liegt an der Tatsache, dass für JSON Steuerzeichen maskiert werden müssen. Sehen Sie diesen ausgezeichneten Kommentar hier .