[java] JsonParseException : 인용되지 않은 잘못된 문자 ((CTRL-CHAR, 코드 10)

org.apache.httpcomponentsJSON 형식 데이터를 API에 게시하는 Rest API 를 사용하려고합니다 .

이 예외가 발생합니다.

원인 : com.fasterxml.jackson.core.JsonParseException : 따옴표없는 잘못된 문자 ((CTRL-CHAR, 코드 10)) : 문자열에 포함 되려면 백 슬래시를 사용하여 이스케이프해야합니다.

그 이유는 ctrl-charJSON 문자열에이 포함되어 있기 때문 입니다.

이 솔루션이나 다른 솔루션을 대체 할 방법이 있습니까?



답변

JSON 문자열 리터럴에 개행 문자 (또는 기타 제어 문자)가있는 경우 이러한 상황이 발생할 수 있습니다.

{"foo": "bar
baz"}

데이터를 생성하는 사람이라면 "\\n"문자열 리터럴을 만들 때 실제 줄 바꿈을 이스케이프 처리 된 줄로 바꾸 십시오.

{"foo": "bar\nbaz"}


답변

사용

mapper.configure(
    JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(),
    true
);

javadoc 참조 :

/**
 * Feature that determines whether parser will allow
 * JSON Strings to contain unescaped 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.
 */

이전 옵션 JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS은 2.10부터 더 이상 사용되지 않습니다.

github thread 도 참조하십시오 .


답변

Salesforce 플랫폼에서이 오류는으로 인해 발생 /하며 해결 방법은 //.


답변